docs(priming): remove bd sync references for Dolt backend

Gas Town uses Dolt exclusively. Remove all bd sync and bd daemon
references from agent priming, templates, formulas, and docs.

With Dolt backend:
- Beads changes are automatically persisted
- No manual sync needed (no bd sync)
- No daemon needed (no bd daemon)

Updated files:
- polecat-CLAUDE.md template
- Role templates (crew, mayor, polecat)
- Message templates (spawn, nudge)
- Formulas (polecat-work, sync-workspace, shutdown, etc.)
- Reference docs

Part of hq-4f2f0c: Remove bd sync/daemon from agent priming

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
mayor
2026-01-25 13:36:09 -08:00
committed by beads/crew/emma
parent 30e65b5ca7
commit 1d260d377b
18 changed files with 34 additions and 187 deletions

View File

@@ -28,16 +28,13 @@ This is physics, not politeness. Gas Town is a steam engine - you are a piston.
- `gt mol status` - Check your hooked work - `gt mol status` - Check your hooked work
- `gt mail inbox` - Check for messages - `gt mail inbox` - Check for messages
- `bd ready` - Find available work (no blockers) - `bd ready` - Find available work (no blockers)
- `bd sync` - Sync beads changes
## Session Close Protocol ## Session Close Protocol
Before saying "done": Before saying "done":
1. git status (check what changed) 1. git status (check what changed)
2. git add <files> (stage code changes) 2. git add <files> (stage code changes)
3. bd sync (commit beads changes) 3. git commit -m "..." (commit code)
4. git commit -m "..." (commit code) 4. git push (push to remote)
5. bd sync (commit any new beads changes)
6. git push (push to remote)
**Work is not done until pushed.** **Work is not done until pushed.** Beads changes are automatically committed with Dolt.

View File

@@ -268,13 +268,13 @@ ssh -T git@github.com
git config --global credential.helper cache git config --global credential.helper cache
``` ```
### Beads sync issues ### Beads issues
If beads aren't syncing across clones: If experiencing beads problems:
```bash ```bash
cd ~/gt/myproject/mayor/rig cd ~/gt/myproject/mayor/rig
bd sync --status # Check sync status bd status # Check database health
bd doctor # Run beads health check bd doctor # Run beads health check
``` ```

View File

@@ -626,7 +626,6 @@ bd create --title="..." --type=task
bd update <id> --status=in_progress bd update <id> --status=in_progress
bd close <id> bd close <id>
bd dep add <child> <parent> # child depends on parent bd dep add <child> <parent> # child depends on parent
bd sync # Push/pull changes
``` ```
## Patrol Agents ## Patrol Agents

View File

@@ -135,12 +135,7 @@ bd show {{convoy}}
# Status should reflect archived state # Status should reflect archived state
``` ```
**4. Sync to persist:** **Exit criteria:** Convoy archived."""
```bash
bd sync
```
**Exit criteria:** Convoy archived, changes synced."""
[[steps]] [[steps]]
id = "notify-overseer" id = "notify-overseer"

View File

@@ -419,114 +419,10 @@ gt mail send mayor/ -s "Health: <rig> <component> unresponsive" \\
Reset unresponsive_cycles to 0 when component responds normally.""" Reset unresponsive_cycles to 0 when component responds normally."""
[[steps]]
id = "hung-session-detection"
title = "Detect and recover hung Gas Town sessions (SURGICAL)"
needs = ["health-scan"]
description = """
Detect and surgically recover hung Gas Town sessions where the Claude API call is stuck.
A hung session appears "running" (tmux session exists, Claude process exists) but
the API call has been stuck indefinitely. This breaks patrol chains - if witness
hangs, refinery never gets nudged about new MRs.
**Why existing checks miss this:**
- zombie-scan only catches processes not in tmux sessions
- gt status shows "running" if tmux session exists
- Nudges queue but never get processed (Claude can't respond)
## SURGICAL TARGETING
**ONLY these session patterns are valid targets:**
- `gt-<rig>-witness` (e.g., gt-kalshi-witness, gt-horizon-witness)
- `gt-<rig>-refinery` (e.g., gt-kalshi-refinery)
- `hq-deacon`
**NEVER touch sessions that don't match these patterns exactly.**
## DETECTION (All checks must pass)
For each Gas Town session, capture output and verify ALL of these:
```bash
# Step 1: Get session output
output=$(tmux capture-pane -t <session-name> -p 2>/dev/null | tail -10)
```
**Check 1: Session is in waiting state**
Must see one of: `Clauding`, `Deciphering`, `Marinating`, `Finagling`, `thinking`
```bash
echo "$output" | grep -qiE 'Clauding|Deciphering|Marinating|Finagling|thinking'
```
**Check 2: Duration exceeds threshold (30+ minutes)**
Parse duration from output like "21h 35m 20s" or "45m 30s":
```bash
# Extract hours and minutes
hours=$(echo "$output" | grep -oE '[0-9]+h' | head -1 | tr -d 'h')
minutes=$(echo "$output" | grep -oE '[0-9]+m' | head -1 | tr -d 'm')
total_minutes=$((${hours:-0} * 60 + ${minutes:-0}))
# Threshold: 30 minutes minimum
[ "$total_minutes" -ge 30 ]
```
**Check 3: Zero tokens received (definite hang) OR very long duration (>2 hours)**
```bash
# Definite hang: zero tokens received
echo "$output" | grep -qE '↓ 0 tokens'
# OR extremely long duration (>2 hours = 120 minutes)
[ "$total_minutes" -ge 120 ]
```
**Check 4: NOT showing active tool execution**
Active sessions show tool markers (⏺). If present, session is actually working:
```bash
# If tool markers present in recent output, DO NOT kill
echo "$output" | grep -qE '⏺|Read|Write|Bash|Edit' && continue
```
## RECOVERY (Only after ALL checks pass)
**Log the action first:**
```bash
echo "[$(date)] RECOVERING HUNG: <session-name> (${hours}h ${minutes}m, waiting state)" >> $GT_ROOT/logs/hung-sessions.log
```
**Kill and restart based on session type:**
For witness:
```bash
tmux kill-session -t gt-<rig>-witness 2>/dev/null
gt witness start <rig>
```
For refinery:
```bash
tmux kill-session -t gt-<rig>-refinery 2>/dev/null
gt refinery restart <rig>
```
For deacon (self-recovery - use with caution):
```bash
# Deacon detecting itself is hung is a paradox
# Only kill if another deacon instance exists or human confirmed
gt mail send mayor/ -s "DEACON SELF-HUNG DETECTED" -m "Deacon appears hung. Human intervention required."
```
## VERIFICATION
After restart, verify new session is healthy:
```bash
sleep 5
tmux has-session -t <session-name> && echo "Session restarted successfully"
```
**Exit criteria:** All hung Gas Town sessions detected and recovered (or escalated if recovery failed)."""
[[steps]] [[steps]]
id = "zombie-scan" id = "zombie-scan"
title = "Detect zombie polecats (NO KILL AUTHORITY)" title = "Detect zombie polecats (NO KILL AUTHORITY)"
needs = ["hung-session-detection"] needs = ["health-scan"]
description = """ description = """
Defense-in-depth DETECTION of zombie polecats that Witness should have cleaned. Defense-in-depth DETECTION of zombie polecats that Witness should have cleaned.

View File

@@ -190,11 +190,6 @@ bd create --title="Digest: {{date}}" --type=digest \
--label=digest,{{period}} --label=digest,{{period}}
``` ```
**3. Sync:**
```bash
bd sync
```
**Exit criteria:** Digest sent to Mayor and archived as bead.""" **Exit criteria:** Digest sent to Mayor and archived as bead."""
[[steps]] [[steps]]

View File

@@ -270,11 +270,6 @@ Overall assessment:
<brief summary - healthy, needs attention, significant issues, etc.>" <brief summary - healthy, needs attention, significant issues, etc.>"
``` ```
**2. Sync beads:**
```bash
bd sync
```
**Exit criteria:** Tracking issue updated with summary.""" **Exit criteria:** Tracking issue updated with summary."""
[[steps]] [[steps]]

View File

@@ -306,11 +306,6 @@ bd close <source-issue> --reason="merged via conflict resolution"
The Refinery normally closes issues after merge, but since we pushed The Refinery normally closes issues after merge, but since we pushed
directly to main, we handle it here. directly to main, we handle it here.
**3. Sync beads:**
```bash
bd sync
```
**Exit criteria:** Original MR and source issue are closed.""" **Exit criteria:** Original MR and source issue are closed."""
[[steps]] [[steps]]

View File

@@ -254,13 +254,11 @@ Signal completion and clean up. You cease to exist after this step.
**Self-Cleaning Model:** **Self-Cleaning Model:**
Once you run `gt done`, you're gone. The command: Once you run `gt done`, you're gone. The command:
1. Syncs beads 1. Nukes your sandbox
2. Nukes your sandbox 2. Exits your session immediately
3. Exits your session immediately
**Run gt done:** **Run gt done:**
```bash ```bash
bd sync
gt done gt done
``` ```
@@ -271,7 +269,7 @@ gt done
You are NOT involved in any of that. You're gone. Done means gone. You are NOT involved in any of that. You're gone. Done means gone.
**Exit criteria:** Beads synced, sandbox nuked, session exited.""" **Exit criteria:** Sandbox nuked, session exited."""
[vars] [vars]
[vars.pr_url] [vars.pr_url]

View File

@@ -401,12 +401,7 @@ bd show {{issue}}
bd update {{issue}} --notes "Implemented: <brief summary of what was done>" bd update {{issue}} --notes "Implemented: <brief summary of what was done>"
``` ```
**3. Sync beads:** **Exit criteria:** Issue updated with completion notes."""
```bash
bd sync
```
**Exit criteria:** Issue updated with completion notes, beads synced."""
[[steps]] [[steps]]
id = "submit-and-exit" id = "submit-and-exit"

View File

@@ -69,7 +69,7 @@ git branch --show-current
**2. Check beads state:** **2. Check beads state:**
```bash ```bash
bd sync --status bd status
``` ```
**3. Document starting state:** **3. Document starting state:**
@@ -77,7 +77,7 @@ bd sync --status
- Uncommitted changes (staged/unstaged) - Uncommitted changes (staged/unstaged)
- Untracked files (list them) - Untracked files (list them)
- Stash entries - Stash entries
- Beads sync status - Beads database health
This information guides decisions in subsequent steps. This information guides decisions in subsequent steps.
@@ -241,36 +241,23 @@ risk merging incorrectly. A resubmitted branch is better than a broken main.
[[steps]] [[steps]]
id = "sync-beads" id = "sync-beads"
title = "Sync beads state" title = "Verify beads state"
needs = ["sync-git"] needs = ["sync-git"]
description = """ description = """
Sync the beads database with remote. Verify beads database is healthy.
With Dolt backend, beads changes are automatically persisted - no manual sync needed.
```bash ```bash
bd sync bd status # Check database health
bd list --status=in_progress # Verify active work is visible
``` ```
**If conflicts:** **If issues:**
Beads uses JSONL append-only format, so true conflicts are rare. - Check dolt sql-server is running
If they occur: - Verify database connectivity
```bash
bd sync --status # Diagnose
```
Likely causes: **Exit criteria:** Beads database healthy and accessible."""
- Two agents edited same bead simultaneously
- Corrupted beads-sync branch
Resolution:
```bash
# Try pulling fresh
git fetch origin beads-sync
bd sync
```
If still failing, escalate to mayor.
**Exit criteria:** Beads synced successfully."""
[[steps]] [[steps]]
id = "run-doctor" id = "run-doctor"

View File

@@ -137,15 +137,17 @@ Old logs are moved to `$GT_ROOT/logs/archive/` with timestamps.
[[steps]] [[steps]]
id = "sync-state" id = "sync-state"
title = "Sync beads and push" title = "Verify beads state"
needs = ["rotate-logs"] needs = ["rotate-logs"]
description = """ description = """
Ensure all beads state is persisted. Verify beads state is healthy.
```bash ```bash
bd sync bd status
``` ```
With Dolt backend, beads changes are automatically persisted.
Note: We do NOT force-commit polecat work here. Their sandboxes Note: We do NOT force-commit polecat work here. Their sandboxes
are preserved with whatever state they had. They'll commit their are preserved with whatever state they had. They'll commit their
own work when they resume. own work when they resume.

View File

@@ -21,7 +21,6 @@ Please either:
2. **If blocked**: File a blocking issue with `bd create --title="Blocked: <reason>" --type=task` 2. **If blocked**: File a blocking issue with `bd create --title="Blocked: <reason>" --type=task`
3. **If done**: Make sure to run: 3. **If done**: Make sure to run:
- `bd close {{ .Issue }}` - `bd close {{ .Issue }}`
- `bd sync`
- `gt done` - `gt done`
## Important ## Important

View File

@@ -21,7 +21,6 @@ You have been assigned to work on the following issue:
3. Commit changes regularly with clear messages 3. Commit changes regularly with clear messages
4. When complete, run: 4. When complete, run:
- `bd close {{ .Issue }}` - `bd close {{ .Issue }}`
- `bd sync`
- `gt done` - `gt done`
## Need Help? ## Need Help?

View File

@@ -11,7 +11,6 @@ to commit." This breaks the Gas Town model. The system is designed for autonomou
**When implementation is complete:** **When implementation is complete:**
- Push your commits: `git push` - Push your commits: `git push`
- Sync beads: `bd sync`
- Either continue with next task OR cycle: `gt handoff` - Either continue with next task OR cycle: `gt handoff`
**Do NOT:** **Do NOT:**
@@ -132,7 +131,7 @@ Town ({{ .TownRoot }})
**Key points:** **Key points:**
- Mail ALWAYS uses town beads - `gt mail` routes there automatically - Mail ALWAYS uses town beads - `gt mail` routes there automatically
- Project issues use your clone's beads - `bd` commands use local `.beads/` - Project issues use your clone's beads - `bd` commands use local `.beads/`
- Run `bd sync` to push/pull beads changes via the `beads-sync` branch - Beads changes are automatically persisted with Dolt
- **GitHub URLs**: Use `git remote -v` to verify repo URLs - never assume orgs like `anthropics/` - **GitHub URLs**: Use `git remote -v` to verify repo URLs - never assume orgs like `anthropics/`
## Prefix-Based Routing ## Prefix-Based Routing
@@ -321,7 +320,6 @@ ONE exception where branches are created. But the rule still applies:
- `bd update <id> --status=in_progress` - Claim an issue - `bd update <id> --status=in_progress` - Claim an issue
- `bd show <id>` - View issue details - `bd show <id>` - View issue details
- `bd close <id>` - Mark issue complete - `bd close <id>` - Mark issue complete
- `bd sync` - Sync beads changes
### Communication ### Communication
- `gt mail send <addr> -s "Subject" -m "Message"` - Send mail (async, queued) - `gt mail send <addr> -s "Subject" -m "Message"` - Send mail (async, queued)
@@ -420,7 +418,6 @@ Before ending your session:
``` ```
[ ] git status (check for uncommitted changes) [ ] git status (check for uncommitted changes)
[ ] git push (push any commits) [ ] git push (push any commits)
[ ] bd sync (sync beads if configured)
[ ] Check inbox (any messages needing response?) [ ] Check inbox (any messages needing response?)
[ ] gt handoff (cycle to fresh session) [ ] gt handoff (cycle to fresh session)
# Or with context: gt handoff -s "Brief" -m "Details" # Or with context: gt handoff -s "Brief" -m "Details"

View File

@@ -295,12 +295,12 @@ cross-session continuity when work doesn't fit neatly into a bead.
``` ```
[ ] git status (check what changed) [ ] git status (check what changed)
[ ] git add <files> (stage code changes) [ ] git add <files> (stage code changes)
[ ] bd sync (commit beads changes)
[ ] git commit -m "..." (commit code) [ ] git commit -m "..." (commit code)
[ ] bd sync (commit any new beads changes)
[ ] git push (push to remote) [ ] git push (push to remote)
[ ] HANDOFF (if incomplete work): [ ] HANDOFF (if incomplete work):
gt mail send mayor/ -s "🤝 HANDOFF: <brief>" -m "<context>" gt mail send mayor/ -s "🤝 HANDOFF: <brief>" -m "<context>"
``` ```
Note: Beads changes are automatically persisted with Dolt.
Town root: {{ .TownRoot }} Town root: {{ .TownRoot }}

View File

@@ -176,7 +176,7 @@ Town ({{ .TownRoot }})
**Key points:** **Key points:**
- You're in a project git worktree - your `.beads/` is tracked in the project repo - You're in a project git worktree - your `.beads/` is tracked in the project repo
- The rig-level `{{ .RigName }}/.beads/` is **gitignored** (local runtime state) - The rig-level `{{ .RigName }}/.beads/` is **gitignored** (local runtime state)
- Run `bd sync` to push/pull beads changes via the `beads-sync` branch - Beads changes are automatically persisted with Dolt
- **GitHub URLs**: Use `git remote -v` to verify repo URLs - never assume orgs like `anthropics/` - **GitHub URLs**: Use `git remote -v` to verify repo URLs - never assume orgs like `anthropics/`
## Prefix-Based Routing ## Prefix-Based Routing

View File

@@ -156,7 +156,6 @@ gt mail send <addr> -s "Subject" -m "Body"
bd show <id> # View issue details bd show <id> # View issue details
bd close <id> --reason "..." # Close issue when done bd close <id> --reason "..." # Close issue when done
bd create --title "..." # File discovered work (don't fix it yourself) bd create --title "..." # File discovered work (don't fix it yourself)
bd sync # Sync beads to remote
``` ```
--- ---
@@ -191,8 +190,7 @@ When your work is done, follow this EXACT checklist - **step 5 is REQUIRED**:
- For Go projects: go test ./... && go vet ./... - For Go projects: go test ./... && go vet ./...
[ ] 2. Stage changes: git add <files> [ ] 2. Stage changes: git add <files>
[ ] 3. Commit changes: git commit -m "msg (issue-id)" [ ] 3. Commit changes: git commit -m "msg (issue-id)"
[ ] 4. Sync beads: bd sync [ ] 4. Self-clean: gt done ← MANDATORY FINAL STEP
[ ] 5. Self-clean: gt done ← MANDATORY FINAL STEP
``` ```
**Quality gates are not optional.** Git worktrees may not trigger pre-commit hooks **Quality gates are not optional.** Git worktrees may not trigger pre-commit hooks