bd sync: 2025-12-24 15:54:44

This commit is contained in:
Steve Yegge
2025-12-24 15:54:44 -08:00
parent 8d4f4762bc
commit 7d01124948

View File

@@ -816,8 +816,8 @@
{"id":"gt-qvn7.1.3","title":"Hook reading in gt prime","description":"Enhance gt prime to check and display hook contents.\n\n## Current Behavior\n\ngt prime loads context:\n- Reads CLAUDE.md\n- Injects beads workflow info\n- Shows status\n\n## New Behavior\n\nAfter loading context, check hook:\n\n```go\n// In prime.go\nfunc checkHook(agent string) {\n wispPath := \".beads-wisp/hook-\" + agent + \".wisp.yaml\"\n if wisp := readWisp(wispPath); wisp != nil {\n // Inject hook info into prime output\n showSlungWork(wisp)\n }\n}\n```\n\n## Output Format\n\nWhen hook has slung work:\n\n```markdown\n## Your Hook\n\nYou have work assigned:\n\n**Bead:** gt-xxx\n**Title:** Fix authentication bug\n**Priority:** P1\n\nContext from previous session:\n\u003e Continue where I left off...\n\n**BEGIN WORK NOW.** Claim it with:\n bd update gt-xxx --status=in_progress\n```\n\n## Files Modified\n\n- cmd/gt/prime.go - Add hook checking\n- internal/wisp/hook.go - Hook reading utilities","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:36:37.061178-08:00","updated_at":"2025-12-24T15:36:37.061178-08:00","dependencies":[{"issue_id":"gt-qvn7.1.3","depends_on_id":"gt-qvn7.1","type":"parent-child","created_at":"2025-12-24T15:36:37.063211-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.1.3","depends_on_id":"gt-qvn7.1.2","type":"blocks","created_at":"2025-12-24T15:36:56.759282-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.1.4","title":"Wisp burn after pickup","description":"Implement wisp cleanup after work is picked up.\n\n## When to Burn\n\nAfter agent has picked up slung work:\n- Agent claims the issue (bd update --status=in_progress)\n- Or agent explicitly acknowledges the handoff\n- Wisp file is deleted\n\n## Implementation Options\n\nOption A: Agent burns manually\n```bash\ngt hook burn # Deletes current hook wisp\n```\n\nOption B: Auto-burn on claim\n- bd update detects theres a hook for this issue\n- Burns the wisp automatically\n\nOption C: Burn in prime (after display)\n- Once shown to agent, delete the wisp\n- Simple but might lose info if agent crashes before reading\n\n## Recommendation\n\nUse Option A (manual burn) for v0.1:\n- Explicit is better than implicit\n- Agent controls when theyre done with handoff\n- Add auto-burn in v0.2\n\n## Command\n\n```bash\ngt hook burn\n# Deletes .beads-wisp/hook-\u003cagent\u003e.wisp.yaml\n# Confirms: \"Hook cleared\"\n```","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-24T15:36:48.284445-08:00","updated_at":"2025-12-24T15:36:48.284445-08:00","dependencies":[{"issue_id":"gt-qvn7.1.4","depends_on_id":"gt-qvn7.1","type":"parent-child","created_at":"2025-12-24T15:36:48.286893-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.1.4","depends_on_id":"gt-qvn7.1.3","type":"blocks","created_at":"2025-12-24T15:36:56.843124-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.2","title":"Phase 2: Hook Execution Protocol","description":"# Phase 2: Hook Execution Protocol\n\nMaking agents actually RUN what's on their hook.\n\n## The Problem\n\nCurrently, agents wake up, get primed, and... wait. They don't automatically\nexecute their pinned molecule or slung work. The propulsion is missing.\n\n## The Solution\n\ngt prime should end with an ACTION, not just context loading:\n\n```\ngt prime output:\n 1. Load context (existing)\n 2. Check hook\n 3. If hook has work → tell agent to RUN IT NOW\n```\n\n## Hook Types\n\n| Hook Content | Action |\n|--------------|--------|\n| Pinned molecule (mol-*) | Execute current step, advance |\n| Slung bead (gt-xxx) | Show bead, begin work |\n| Nothing | Wait for assignment |\n\n## Molecule Execution Pattern\n\nWhen hook has a molecule:\n\n```markdown\n## Your Hook: mol-deacon-patrol\n\nCurrent step: inbox-check\nStatus: pending\n\n**EXECUTE THIS STEP NOW.**\n\n### Step: inbox-check\nCheck the Mayor's inbox for messages...\n\nWhen complete, run: `bd mol advance mol-deacon-patrol`\n```\n\nThe agent sees this, does the step, advances the molecule.\n\n## Implementation\n\n### gt prime enhancements\n\n1. After loading context, check `bd hook`\n2. If molecule → inject step execution prompt\n3. If slung bead → inject \"work on this bead\" prompt\n4. Include the actual step/bead content inline\n\n### bd mol advance command\n\n```bash\nbd mol advance \u003cmol-id\u003e\n# Marks current step complete\n# Moves to next step (respecting deps)\n# Returns new current step or \"COMPLETE\"\n```\n\n### Molecule State Tracking\n\nMolecules need execution state:\n\n```yaml\n# .beads/molecules/mol-deacon-patrol.state.yaml\nid: mol-deacon-patrol\ncurrent_step: inbox-check\nstep_states:\n inbox-check: pending\n trigger-pending-spawns: blocked\n health-scan: blocked\nsteps_completed: []\nstarted_at: 2025-12-24T...\n```\n\n## Files Changed\n\n- `cmd/gt/prime.go` - Hook check and action injection\n- Beads: `cmd/bd/mol_advance.go` - Step advancement\n- Beads: `internal/mol/state.go` - Molecule execution state\n\n## Acceptance Criteria\n\n- gt prime shows current hook and prompts action\n- bd mol advance moves molecule forward\n- Agent naturally follows the execution flow","status":"open","priority":0,"issue_type":"epic","created_at":"2025-12-24T15:34:32.037329-08:00","updated_at":"2025-12-24T15:34:32.037329-08:00","dependencies":[{"issue_id":"gt-qvn7.2","depends_on_id":"gt-qvn7","type":"parent-child","created_at":"2025-12-24T15:34:32.039415-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.2","depends_on_id":"gt-qvn7.1","type":"blocks","created_at":"2025-12-24T15:36:00.393831-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.2.1","title":"bd mol advance command","description":"Implement bd mol advance for stepping through molecules.\n\n## Command\n\n```bash\nbd mol advance \u003cmol-id\u003e\n```\n\n## Behavior\n\n1. Load molecule state from .beads/molecules/\u003cmol-id\u003e.state.yaml\n2. Find current step\n3. Mark current step complete\n4. Find next available step (respecting deps)\n5. Update state file\n6. Output next step info (or COMPLETE)\n\n## State File Format\n\n```yaml\nid: mol-deacon-patrol\nformula: mol-deacon-patrol\nstarted_at: 2025-12-24T...\ncurrent_step: inbox-check\nstep_states:\n inbox-check: in_progress\n trigger-pending-spawns: pending\n health-scan: pending\ncompleted_steps: []\n```\n\n## Step State Machine\n\n```\npending → in_progress → completed\n ↓\n blocked (if deps not met)\n```\n\n## Output\n\n```bash\n$ bd mol advance mol-deacon-patrol\n✓ Step 'inbox-check' completed\n→ Next step: 'trigger-pending-spawns'\n\nTitle: Nudge newly spawned polecats\nDescription: ...\n```\n\nOr if complete:\n```bash\n$ bd mol advance mol-deacon-patrol\n✓ Step 'loop-or-exit' completed\n✓ Molecule COMPLETE\n```\n\n## Files\n\n- Beads repo: cmd/bd/mol_advance.go\n- Beads repo: internal/mol/state.go","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:37:10.413975-08:00","updated_at":"2025-12-24T15:37:10.413975-08:00","dependencies":[{"issue_id":"gt-qvn7.2.1","depends_on_id":"gt-qvn7.2","type":"parent-child","created_at":"2025-12-24T15:37:10.416191-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.2.1","depends_on_id":"gt-qvn7.2.2","type":"blocks","created_at":"2025-12-24T15:37:39.740685-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.2.2","title":"Molecule state file management","description":"Implement molecule execution state tracking.\n\n## State Location\n\n```\n.beads/molecules/\u003cmol-id\u003e.state.yaml\n```\n\n## State Schema\n\n```yaml\nid: mol-deacon-patrol\nformula: mol-deacon-patrol # Source formula\nbonded_at: ISO timestamp\nbonded_by: entity who created this instance\n\n# Execution state\nstatus: running | paused | completed | failed\ncurrent_step: step-id\nstarted_at: ISO timestamp\ncompleted_at: ISO timestamp (if done)\n\n# Per-step state\nsteps:\n inbox-check:\n status: completed\n started_at: ...\n completed_at: ...\n trigger-pending-spawns:\n status: in_progress\n started_at: ...\n health-scan:\n status: pending\n\n# Variables (from formula instantiation)\nvariables:\n rig: gastown\n issue_id: gt-xxx\n```\n\n## Operations\n\n- CreateState(molID, formula, variables) - Initialize state\n- LoadState(molID) - Read current state\n- SaveState(molID, state) - Write state\n- AdvanceStep(molID) - Mark current complete, find next\n\n## Files\n\n- Beads repo: internal/mol/state.go","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:37:21.389134-08:00","updated_at":"2025-12-24T15:37:21.389134-08:00","dependencies":[{"issue_id":"gt-qvn7.2.2","depends_on_id":"gt-qvn7.2","type":"parent-child","created_at":"2025-12-24T15:37:21.39098-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.2.1","title":"bd mol advance command","description":"## Cross-Repo Reference\n\nThis work is tracked in beads repo as **bd-3zm7**.\n\nThe gastown task gt-qvn7.2.1 is a placeholder. \nActual implementation happens in beads.\n\nSee: bd show bd-3zm7 (from beads/crew/dave)","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:37:10.413975-08:00","updated_at":"2025-12-24T15:54:18.047065-08:00","dependencies":[{"issue_id":"gt-qvn7.2.1","depends_on_id":"gt-qvn7.2","type":"parent-child","created_at":"2025-12-24T15:37:10.416191-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.2.1","depends_on_id":"gt-qvn7.2.2","type":"blocks","created_at":"2025-12-24T15:37:39.740685-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.2.2","title":"Molecule state file management","description":"## Cross-Repo Reference\n\nThis work is tracked in beads repo as **bd-hulf**.\n\nThe gastown task gt-qvn7.2.2 is a placeholder.\nActual implementation happens in beads.\n\nSee: bd show bd-hulf (from beads/crew/dave)","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:37:21.389134-08:00","updated_at":"2025-12-24T15:54:18.123358-08:00","dependencies":[{"issue_id":"gt-qvn7.2.2","depends_on_id":"gt-qvn7.2","type":"parent-child","created_at":"2025-12-24T15:37:21.39098-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.2.3","title":"gt prime molecule execution prompt","description":"Enhance gt prime to show molecule execution prompts.\n\n## When Hook Has Molecule\n\ngt prime should output:\n\n```markdown\n## Your Patrol: mol-deacon-patrol\n\n**Current Step:** inbox-check\n**Status:** pending (ready to execute)\n\n### Step: inbox-check\n\nHandle callbacks from agents.\n\nCheck the Mayor inbox for messages from:\n- Witnesses reporting polecat status\n- Refineries reporting merge results\n...\n\n**EXECUTE THIS STEP NOW.**\n\nWhen complete, run:\n bd mol advance mol-deacon-patrol\n```\n\n## Logic\n\n1. Check if hook has pinned molecule (bd hook --json)\n2. Load molecule state\n3. Get current step details from formula\n4. Format execution prompt\n5. Include advance command\n\n## Different from Slung Work\n\nSlung work (bead) says \"work on this issue\"\nMolecule says \"execute this step of this workflow\"\n\nBoth use the hook, but prompts differ.\n\n## Files\n\n- cmd/gt/prime.go\n- May need to read formula to get step descriptions","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:37:33.304687-08:00","updated_at":"2025-12-24T15:37:33.304687-08:00","dependencies":[{"issue_id":"gt-qvn7.2.3","depends_on_id":"gt-qvn7.2","type":"parent-child","created_at":"2025-12-24T15:37:33.306622-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.2.3","depends_on_id":"gt-qvn7.2.2","type":"blocks","created_at":"2025-12-24T15:37:39.825493-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.3","title":"Phase 3: Polecat Work Cycle","description":"# Phase 3: Polecat Work Cycle\n\nThe complete lifecycle of a single polecat working a single issue.\n\n## The Cycle\n\n```\nspawn → wake → prime → read hook → work → submit → complete → cleanup\n```\n\n## Step by Step\n\n### 1. Spawn (Deacon/Mayor initiates)\n\n```bash\ngt spawn --issue gt-xxx --rig gastown\n```\n\nCreates fresh worktree, assigns issue, creates polecat session.\n\n### 2. Wake (Claude starts)\n\nPolecat Claude session starts. SessionStart hook fires.\n\n### 3. Prime (Context loads)\n\n```bash\ngt prime # Runs automatically via hook\n```\n\nLoads CLAUDE.md, injects beads context, checks hook.\n\n### 4. Read Hook\n\ngt prime finds the assigned issue on the hook:\n\n```\n## Your Hook: gt-xxx\n\nYou have been assigned this issue. Begin work now.\n\nTitle: Fix authentication bug\nPriority: P1\nDescription: ...\n\nClaim it with: bd update gt-xxx --status=in_progress\n```\n\n### 5. Work\n\nPolecat:\n- Claims issue: `bd update gt-xxx --status=in_progress`\n- Reads relevant code\n- Makes changes\n- Commits with issue ID\n\n### 6. Submit\n\nPolecat:\n- Pushes branch\n- Creates MR bead: `bd create \"Merge: gt-xxx\" --type=merge-request`\n- Signals completion\n\n### 7. Complete\n\nPolecat:\n- Closes the issue: `bd close gt-xxx --reason \"Fixed in commit abc123\"`\n- Syncs beads: `bd sync`\n\n### 8. Cleanup\n\nPolecat:\n- Sends completion mail to Witness\n- Session terminates (or awaits next assignment)\n\n## The mol-polecat-work Molecule\n\nThis is already defined. The polecat should be bonded to it on spawn.\n\nKey steps:\n1. orient - Read context, understand codebase\n2. claim - Update issue status\n3. work - Implement the fix\n4. test - Run tests, verify\n5. submit - Push, create MR\n6. handoff - Signal done, sync\n\n## Implementation\n\n### gt spawn enhancements\n\n- Automatically pin mol-polecat-work to new polecat\n- Pass issue ID as variable\n- Ensure hook is set before Claude starts\n\n### Polecat CLAUDE.md\n\nMust include:\n- Hook reading instructions\n- Molecule execution pattern\n- Exit state vocabulary (COMPLETED, BLOCKED, ESCALATE)\n\n## Acceptance Criteria\n\n- gt spawn creates polecat with issue on hook\n- Polecat wakes and begins work automatically\n- Polecat completes issue and submits MR\n- Issue is closed with commit reference","status":"open","priority":0,"issue_type":"epic","created_at":"2025-12-24T15:34:53.710094-08:00","updated_at":"2025-12-24T15:34:53.710094-08:00","dependencies":[{"issue_id":"gt-qvn7.3","depends_on_id":"gt-qvn7","type":"parent-child","created_at":"2025-12-24T15:34:53.712193-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.3","depends_on_id":"gt-qvn7.2","type":"blocks","created_at":"2025-12-24T15:36:00.479432-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.3.1","title":"gt spawn pins mol-polecat-work","description":"Enhance gt spawn to automatically pin mol-polecat-work to new polecats.\n\n## Current Behavior\n\ngt spawn --issue gt-xxx creates polecat with issue in mail but no molecule.\n\n## New Behavior\n\ngt spawn should:\n1. Create fresh worktree (existing)\n2. Initialize polecat beads (existing)\n3. Bond mol-polecat-work with issue as variable\n4. Pin the molecule to polecat hook\n5. Create polecat session\n\n## Molecule Bonding\n\n```bash\nbd mol bond mol-polecat-work --var issue_id=gt-xxx --var rig=gastown\n```\n\nCreates .beads/molecules/mol-polecat-work-\u003chash\u003e.state.yaml\n\n## Hook Pinning\n\n```bash\nbd pin mol-polecat-work-\u003chash\u003e --for polecat/\u003cname\u003e\n```\n\nCreates .beads-wisp/hook-polecat-\u003cname\u003e.wisp.yaml pointing to molecule\n\n## Files\n\n- internal/spawn/spawn.go - Add mol-polecat-work bonding\n- Or: internal/cmd/spawn.go depending on structure","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:37:51.450108-08:00","updated_at":"2025-12-24T15:37:51.450108-08:00","dependencies":[{"issue_id":"gt-qvn7.3.1","depends_on_id":"gt-qvn7.3","type":"parent-child","created_at":"2025-12-24T15:37:51.452167-08:00","created_by":"daemon"}]}
@@ -825,7 +825,7 @@
{"id":"gt-qvn7.3.3","title":"mol-polecat-work-v01 minimal formula","description":"Create minimal mol-polecat-work formula for tracer bullet.\n\n## Simplified Steps\n\nFor v0.1, just the essentials:\n\n```yaml\nformula: mol-polecat-work-v01\ndescription: Minimal polecat work cycle for tracer bullet.\nversion: 1\n\nvariables:\n - name: issue_id\n required: true\n - name: rig\n required: true\n\nsteps:\n - id: claim\n title: Claim the issue\n description: |\n Run: bd update {{issue_id}} --status=in_progress\n Read the issue: bd show {{issue_id}}\n Understand what needs to be done.\n\n - id: work\n title: Implement the fix\n needs: [claim]\n description: |\n Do the work described in the issue.\n Make your changes.\n Test them.\n Commit with issue ID: git commit -m \"description ({{issue_id}})\"\n\n - id: submit\n title: Submit for review\n needs: [work]\n description: |\n Push your branch: git push -u origin \u003cbranch\u003e\n Create MR: bd create \"Merge: {{issue_id}}\" --type=merge-request\n Close issue: bd close {{issue_id}}\n Sync: bd sync\n Signal done: gt mail send witness/ -s \"LIFECYCLE: Done\"\n```\n\n## Location\n\n.beads/formulas/mol-polecat-work-v01.formula.yaml\n\n## Notes\n\n- Keep it simple for tracer bullet\n- Full mol-polecat-work can be more elaborate\n- This proves the pattern works","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:38:20.520847-08:00","updated_at":"2025-12-24T15:38:20.520847-08:00","dependencies":[{"issue_id":"gt-qvn7.3.3","depends_on_id":"gt-qvn7.3","type":"parent-child","created_at":"2025-12-24T15:38:20.52293-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.4","title":"Phase 4: Deacon Patrol Loop","description":"$(cat /tmp/phase4.md)","status":"open","priority":0,"issue_type":"epic","created_at":"2025-12-24T15:35:32.511322-08:00","updated_at":"2025-12-24T15:35:32.511322-08:00","dependencies":[{"issue_id":"gt-qvn7.4","depends_on_id":"gt-qvn7","type":"parent-child","created_at":"2025-12-24T15:35:32.513848-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.4","depends_on_id":"gt-qvn7.2","type":"blocks","created_at":"2025-12-24T15:36:00.565162-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.4.1","title":"Deacon CLAUDE.md for patrol execution","description":"Update Deacon role CLAUDE.md for patrol execution.\n\n## Key Additions\n\n### Role Definition\n\n```markdown\n## Your Role: DEACON\n\nYou are the Deacon - Gas Towns heartbeat process.\nYou run mol-deacon-patrol continuously.\n\nYour job:\n- Check mail for callbacks\n- Spawn polecats for ready work\n- Monitor rig health (basic)\n- Cycle context when full\n```\n\n### Patrol Execution\n\n```markdown\n## Patrol Execution\n\nYou run mol-deacon-patrol on your hook.\n\nOn each heartbeat from the daemon:\n1. Check your current step: bd hook\n2. Execute that step\n3. Advance: bd mol advance mol-deacon-patrol\n4. If COMPLETE: restart the patrol or cycle context\n\nThe daemon keeps you alive. Your job is to run the patrol.\n```\n\n### Heartbeat Response\n\n```markdown\n## Heartbeat Response\n\nWhen you see \"HEARTBEAT: ...\" from the daemon:\n- If idle: check your hook, start/resume patrol\n- If mid-step: continue working\n- If waiting: the heartbeat reminds you to check state\n\nHeartbeats are your clock tick. Use them.\n```\n\n### Context Cycling\n\n```markdown\n## Context Cycling\n\nWhen context is high (\u003e80%):\n1. Write state to molecule\n2. Run: gt handoff -s \"Deacon cycling\" -m \"Context full\"\n3. Exit cleanly\n4. Daemon respawns you\n5. You wake, prime, read hook, continue\n```\n\n## File\n\ndeacon/CLAUDE.md (in town root)","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:38:35.345899-08:00","updated_at":"2025-12-24T15:38:35.345899-08:00","dependencies":[{"issue_id":"gt-qvn7.4.1","depends_on_id":"gt-qvn7.4","type":"parent-child","created_at":"2025-12-24T15:38:35.347599-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.4.2","title":"mol-deacon-patrol-v01 minimal formula","description":"Create minimal mol-deacon-patrol formula for tracer bullet.\n\n## Simplified Patrol\n\nFor v0.1, just the essentials:\n\n```yaml\nformula: mol-deacon-patrol-v01\ndescription: Minimal Deacon patrol for tracer bullet.\nversion: 1\n\nsteps:\n - id: inbox-check\n title: Check inbox\n description: |\n Run: gt mail inbox\n Handle any messages.\n Note any spawn requests or status updates.\n\n - id: spawn-work\n title: Spawn polecat for ready work\n needs: [inbox-check]\n description: |\n Run: bd ready\n If work available:\n gt spawn --issue \u003cfirst-ready\u003e --rig gastown\n If no work: proceed to next step.\n\n - id: loop-decision\n title: Loop or cycle\n needs: [spawn-work]\n description: |\n Check context usage.\n If context \u003c 80%:\n Advance to inbox-check (loop)\n If context \u003e= 80%:\n gt handoff -s \"Deacon cycling\"\n Exit (daemon respawns)\n```\n\n## Loop Behavior\n\nAfter loop-decision completes:\n- bd mol advance should reset to inbox-check\n- Or: create new patrol instance\n\n## Alternative: Reset Instead of Loop\n\nSimpler approach for v0.1:\n- When patrol completes, Deacon runs gt handoff\n- Fresh Deacon wakes with fresh patrol\n- No loop logic needed in molecule\n\n## Location\n\n.beads/formulas/mol-deacon-patrol-v01.formula.yaml","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:38:48.948745-08:00","updated_at":"2025-12-24T15:38:48.948745-08:00","dependencies":[{"issue_id":"gt-qvn7.4.2","depends_on_id":"gt-qvn7.4","type":"parent-child","created_at":"2025-12-24T15:38:48.950928-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.4.2","title":"mol-deacon-patrol-v01 minimal formula","description":"Create minimal mol-deacon-patrol formula for tracer bullet.\n\n## Simplified Patrol (v0.1)\n\n```yaml\nformula: mol-deacon-patrol-v01\ndescription: Minimal Deacon patrol for tracer bullet.\nversion: 1\n\nsteps:\n - id: inbox-check\n title: Check inbox\n description: |\n Run: gt mail inbox\n Handle any messages.\n Note any spawn requests or status updates.\n\n - id: spawn-work\n title: Spawn polecat for ready work\n needs: [inbox-check]\n description: |\n Run: bd ready\n If work available and no polecat already working it:\n gt spawn --issue \u003cfirst-ready\u003e --rig gastown\n If no work: proceed to next step.\n\n - id: self-inspect\n title: Assess context and decide loop vs cycle\n needs: [spawn-work]\n description: |\n Evaluate whether to loop (reset) or cycle (handoff).\n \n ## Heuristics\n \n **Favor LOOP (bd mol reset):**\n - Context \u003c 60%\n - No errors in this cycle\n - Patrol completed normally\n \n **Favor CYCLE (gt handoff):**\n - Context \u003e 80%\n - Errors encountered\n - Been running \u003e 1 hour without cycle\n - Model suggests refresh would help\n \n **Action:**\n - If LOOP: bd mol reset mol-deacon-patrol\n - If CYCLE: gt handoff -s \"Deacon cycling\" -m \"Context: X%, cycles: N\"\n```\n\n## Loop via Reset\n\nAfter self-inspect, if staying:\n```bash\nbd mol reset mol-deacon-patrol\n```\n\nThis resets all steps to pending, current_step to inbox-check.\nDeacon immediately continues with fresh patrol cycle.\n\n## Cycle via Handoff\n\nIf context high or refresh needed:\n```bash\ngt handoff -s \"Deacon cycling\" -m \"Context high, cycling for fresh start\"\n```\n\nDaemon respawns fresh Deacon with mol-deacon-patrol on hook.\n\n## Location\n\n.beads/formulas/mol-deacon-patrol-v01.formula.yaml","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:38:48.948745-08:00","updated_at":"2025-12-24T15:54:37.857944-08:00","dependencies":[{"issue_id":"gt-qvn7.4.2","depends_on_id":"gt-qvn7.4","type":"parent-child","created_at":"2025-12-24T15:38:48.950928-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.4.3","title":"Deacon initialization with patrol molecule","description":"Ensure Deacon always has mol-deacon-patrol on hook.\n\n## The Problem\n\nWhen Deacon starts fresh, it needs:\n1. mol-deacon-patrol bonded\n2. Molecule pinned to hook\n3. Ready to execute\n\n## Solution: Bootstrap in gt prime\n\nWhen gt prime runs for role=deacon:\n\n1. Check if mol-deacon-patrol exists on hook\n2. If not: bond it and pin it\n3. Then show execution prompt\n\n```go\n// In prime.go for deacon role\nif role == \"deacon\" \u0026\u0026 !hasPatrolOnHook() {\n // Bond the patrol formula\n bondDeaconPatrol()\n // Pin to hook\n pinToHook(\"deacon\", patrolMolID)\n}\n```\n\n## Alternative: Deacon Startup Hook\n\nOr handle in Deacon SessionStart hook:\n- Check hook\n- If empty: gt mol bond mol-deacon-patrol \u0026\u0026 gt mol pin\n\n## Files\n\n- cmd/gt/prime.go (if handling in prime)\n- deacon/hooks/session-start.sh (if handling in hook)","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:39:00.670376-08:00","updated_at":"2025-12-24T15:39:00.670376-08:00","dependencies":[{"issue_id":"gt-qvn7.4.3","depends_on_id":"gt-qvn7.4","type":"parent-child","created_at":"2025-12-24T15:39:00.672391-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.5","title":"Phase 5: Integration and Demo","description":"$(cat /tmp/phase5.md)","status":"open","priority":0,"issue_type":"epic","created_at":"2025-12-24T15:35:52.803427-08:00","updated_at":"2025-12-24T15:35:52.803427-08:00","dependencies":[{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7","type":"parent-child","created_at":"2025-12-24T15:35:52.805435-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7.3","type":"blocks","created_at":"2025-12-24T15:36:00.648003-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7.4","type":"blocks","created_at":"2025-12-24T15:36:00.730985-08:00","created_by":"daemon"}]}
{"id":"gt-qvn7.5.1","title":"End-to-end integration test","description":"Create and run end-to-end integration test.\n\n## Test Scenario\n\n1. Clean state: no polecats, fresh beads\n2. Create test issue: simple documentation fix\n3. Verify Deacon sees it: bd ready shows issue\n4. Trigger Deacon: send heartbeat or wait\n5. Verify spawn: gt polecats shows new polecat\n6. Watch polecat work: tmux attach\n7. Verify completion: issue closed, MR created\n\n## Test Script\n\n```bash\n#!/bin/bash\n# e2e-test.sh\n\n# 1. Clean state\ngt polecat remove --all\nbd create \"Test: update README typo\" --type=task --priority=1\n\n# 2. Verify ready\nbd ready | grep \"update README\"\n\n# 3. Wait for Deacon or trigger\n# (manual for v0.1)\n\n# 4. Watch\ngt status\ngt polecats gastown\n\n# 5. Wait for completion\n# (manual observation for v0.1)\n\n# 6. Verify\nbd list --status=closed | grep \"update README\"\n```\n\n## Success Criteria\n\n- Issue created and visible in bd ready\n- Polecat spawned and working\n- Issue closed with commit reference\n- No manual intervention (except observation)","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:39:20.642596-08:00","updated_at":"2025-12-24T15:39:20.642596-08:00","dependencies":[{"issue_id":"gt-qvn7.5.1","depends_on_id":"gt-qvn7.5","type":"parent-child","created_at":"2025-12-24T15:39:20.64439-08:00","created_by":"daemon"}]}