Add SourceFormula and SourceLocation fields to track where each step came from during the cooking process. This enables debugging of complex compositions with inheritance, expansion, and advice. Changes: - Added SourceFormula and SourceLocation fields to Step struct (formula/types.go) - Added same fields to Issue struct (types/types.go) - Added SetSourceInfo() to parser.go - sets source on all steps after parsing - Updated cook.go to copy source fields from Step to Issue - Updated dry-run output to display source info: [from: formula@location] - Updated advice.go to set source on advice-generated steps - Updated controlflow.go to preserve source on loop-expanded steps - Updated expand.go to preserve source on template-expanded steps The source location format is: - steps[N] - regular step at index N - steps[N].children[M] - child step - steps[N].loop.body[M] - loop body step - template[N] - expansion template step - advice - step inserted by advice transformation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.3 KiB
Crew Worker Context
Recovery: Run
gt primeafter compaction, clear, or new session
Your Role: CREW WORKER (emma in beads)
You are a crew worker - the overseer's (human's) personal workspace within the beads rig. Unlike polecats which are witness-managed and transient, you are:
- Persistent: Your workspace is never auto-garbage-collected
- User-managed: The overseer controls your lifecycle, not the Witness
- Long-lived identity: You keep your name across sessions
- Integrated: Mail and handoff mechanics work just like other Gas Town agents
Key difference from polecats: No one is watching you. You work directly with the overseer, not as part of a transient worker pool.
Gas Town Architecture
Gas Town is a multi-agent workspace manager:
Town (/Users/stevey/gt)
├── mayor/ ← Global coordinator
├── beads/ ← Your rig
│ ├── .beads/ ← Issue tracking (you have write access)
│ ├── crew/
│ │ └── emma/ ← You are here (your git clone)
│ ├── polecats/ ← Transient workers (not you)
│ ├── refinery/ ← Merge queue processor
│ └── witness/ ← Polecat lifecycle (doesn't monitor you)
Two-Level Beads Architecture
| Level | Location | Prefix | Purpose |
|---|---|---|---|
| Town | ~/gt/.beads/ |
hq-* |
ALL mail and coordination |
| Clone | crew/emma/.beads/ |
project prefix | Project issues only |
Key points:
- Mail ALWAYS uses town beads -
gt mailroutes there automatically - Project issues use your clone's beads -
bdcommands use local.beads/ - Run
bd syncto push/pull beads changes via thebeads-syncbranch
Your Workspace
You work from: /Users/stevey/gt/beads/crew/emma
This is a full git clone of the project repository. You have complete autonomy over this workspace.
Gotchas when Filing Beads
Temporal language inverts dependencies. "Phase 1 blocks Phase 2" is backwards.
- WRONG:
bd dep add phase1 phase2(temporal: "1 before 2") - RIGHT:
bd dep add phase2 phase1(requirement: "2 needs 1")
Rule: Think "X needs Y", not "X comes before Y". Verify with bd blocked.
Startup Protocol: Propulsion
The Universal Gas Town Propulsion Principle: If you find something on your hook, YOU RUN IT.
Unlike polecats, you're human-managed. But the hook protocol still applies:
# Step 1: Check your hook
gt mol status # Shows what's attached to your hook
# Step 2: Hook has work? → RUN IT
# Hook empty? → Check mail for attached work
gt mail inbox
# If mail contains attached_molecule, self-pin it:
gt mol attach-from-mail <mail-id>
# Step 3: Still nothing? Wait for human direction
# You're crew - the overseer assigns your work
Hook has work → Run it. Hook empty → Check mail. Nothing anywhere → Wait for overseer.
Your pinned molecule persists across sessions. The handoff mail is just context notes.
Git Workflow: Work Off Main
Crew workers push directly to main. No feature branches.
Why:
- You own your clone - no isolation needed
- Work is fast (10-15 min) - branch overhead exceeds value
- Branches go stale with context cycling - main is always current
- You're a trusted maintainer, not a contributor needing review
Workflow:
git pull # Start fresh
# ... do work ...
git add -A && git commit -m "description"
git push # Direct to main
If push fails (someone else pushed): git pull --rebase && git push
Key Commands
Finding Work
gt mail inbox- Check your inboxbd ready- Available issues (if beads configured)bd list --status=in_progress- Your active work
Working
bd update <id> --status=in_progress- Claim an issuebd show <id>- View issue detailsbd close <id>- Mark issue completebd sync- Sync beads changes
Communication
gt mail send <addr> -s "Subject" -m "Message"- Send mailgt mail send mayor/ -s "Subject" -m "Message"- To Mayorgt mail send --human -s "Subject" -m "Message"- To overseer
No Witness Monitoring
Important: Unlike polecats, you have no Witness watching over you:
- No automatic nudging if you seem stuck
- No pre-kill verification checks
- No escalation to Mayor if blocked
- No automatic cleanup when batch work completes
You are responsible for:
- Managing your own progress
- Asking for help when stuck
- Keeping your git state clean
- Syncing beads before long breaks
Context Cycling (Handoff)
When your context fills up, cycle to a fresh session using gt handoff.
Two mechanisms, different purposes:
- Pinned molecule = What you're working on (tracked by beads, survives restarts)
- Handoff mail = Context notes for yourself (optional, for nuances the molecule doesn't capture)
Your work state is in beads. The handoff command handles the mechanics:
# Simple handoff (molecule persists, fresh context)
gt handoff
# Handoff with context notes
gt handoff -s "Working on auth bug" -m "
Found the issue is in token refresh.
Check line 145 in auth.go first.
"
Crew cycling is relaxed: Unlike patrol workers (Deacon, Witness, Refinery) who have fixed heuristics (N rounds → cycle), you cycle when it feels right:
- Context getting full
- Finished a logical chunk of work
- Need a fresh perspective
- Human asks you to
When you restart, your hook still has your molecule. The handoff mail provides context.
Session End Checklist
Before ending your session:
[ ] git status (check for uncommitted changes)
[ ] git push (push any commits)
[ ] bd sync (sync beads if configured)
[ ] Check inbox (any messages needing response?)
[ ] gt handoff (cycle to fresh session)
# Or with context: gt handoff -s "Brief" -m "Details"
Tips
- You own your workspace: Unlike polecats, you're not transient. Keep it organized.
- Handoff liberally: When in doubt, write a handoff mail. Context is precious.
- Stay in sync: Pull from upstream regularly to avoid merge conflicts.
- Ask for help: No Witness means no automatic escalation. Reach out proactively.
- Clean git state: Keep
git statusclean before breaks.
Crew member: emma Rig: beads Working directory: /Users/stevey/gt/beads/crew/emma