Commit Graph

86 Commits

Author SHA1 Message Date
Steve Yegge
8696413e09 feat: add 'gt rig info' command for detailed rig status
Adds a new command `gt rig info <name>` that displays comprehensive
information about a rig including:
- Rig path and git URL
- Active polecats with their state and assigned issues
- Crew workers
- Refinery status (state, PID, current MR, stats)
- Witness and Mayor status with last activity times
- Beads summary (open/in_progress/closed/blocked counts)

Closes: gt-zko

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 22:29:40 -08:00
Steve Yegge
3b1ce3afe1 refactor: Mayor's per-rig clone is canonical for beads and worktrees
- Mayor has <rig>/mayor/rig/ clone (decentralized, discoverable)
- Rig .beads/ symlinks to mayor/rig/.beads (Mayor is beads authority)
- Polecats are worktrees from Mayor's clone (not Refinery)
- Updated architecture.md with new structure

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 20:00:28 -08:00
Steve Yegge
691971a16a feat: crew attach auto-detection, worktree polecats, beads mail
- gt crew at: auto-detect crew from cwd, run gt prime after launch
- Polecats now use git worktrees from refinery (faster than clones)
- Updated architecture.md for two-tier beads mail model
- Town beads (gm-*) for Mayor mail/coordination
- Rig .beads/ symlinks to refinery/rig/.beads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 19:51:36 -08:00
Steve Yegge
cb04302e7b Revert "fix: use 'bd message' instead of 'bd mail' for agent messaging"
This reverts commit 56d30e1896.
2025-12-17 19:45:47 -08:00
Steve Yegge
56d30e1896 fix: use 'bd message' instead of 'bd mail' for agent messaging
The beads command for messaging is 'bd message', not 'bd mail'.
Fixed 4 locations:
- mailbox.go: inbox, read, ack commands
- router.go: send command (also fixed arg order to match bd API)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 19:42:46 -08:00
Steve Yegge
41609e8def feat: add gt rig add command with container-based structure
- Implement AddRig with container-based approach (rig root is NOT a clone)
- Create internal/cmd/rig.go with add/list/remove subcommands
- Clone repo into refinery/rig/, mayor/rig/, crew/main/
- Initialize rig-level .beads/ with derived prefix
- Update docs/architecture.md to match implementation
- File gt-jpt epic for town-level beads redesign

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 19:14:37 -08:00
Steve Yegge
d38cd3d03d feat: add gt install command for harness creation
Implements gt-f9x.3: Create Gas Town workspace structure.

The install command creates a new harness (workspace) with:
- config/town.json - Town configuration with name and version
- config/rigs.json - Empty rigs registry
- mayor/ - Mayor agent home with:
  - CLAUDE.md - Mayor role context from template
  - config.json - Distinguishes town-level mayor
  - mail/inbox.jsonl - Empty inbox
  - state.json - Initial state
- .beads/redirect - Placeholder for default beads location

Usage:
  gt install ~/gt              # Create at path
  gt install . --name mytown   # Current dir with name
  gt install ~/gt --no-beads   # Skip beads setup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 17:20:17 -08:00
Steve Yegge
3f3c7f82b2 fix: improve workspace detection for nested rig structures
Fixes gt-e5o: When a rig has its own mayor/ directory, workspace
detection now continues searching upward for primary markers.

Changes:
- Add AlternativePrimaryMarker (mayor/config.json) to distinguish
  town-level mayor from rig-level mayor clones
- Continue searching after finding secondary marker (mayor/) to
  prefer primary matches higher in the tree
- Return the first secondary match only if no primary is found

This fixes role detection for polecats/refinery/witness when running
from within a rig that has its own mayor/ clone.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 17:03:01 -08:00
Steve Yegge
f04cc6fe15 feat: add template system for role contexts and messages
Implements gt-u1j.20: Prompt templates using go:embed.

- Add internal/templates package with embedded .md.tmpl files
- Role templates: mayor, witness, refinery, polecat, crew
- Message templates: spawn, nudge, escalation, handoff
- Update gt prime to use templates with fallback to hardcoded output
- Add crew role detection for <rig>/crew/<name>/ paths
- Include Gas Town architecture overview in all role contexts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 16:59:40 -08:00
Steve Yegge
f7b0c11157 Merge polecat/Toast: doctor framework (gt-f9x.4)
Adds health check framework with Check interface, Doctor runner,
and gt doctor CLI command.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2025-12-17 16:14:26 -08:00
Steve Yegge
135fb9323b feat: add gt mail check command and update prime for GGT cutover
- Add 'gt mail check' with --inject flag for Claude Code hooks
- Update Mayor prime output to include mail commands and startup info
- Enables full cutover from PGT 'town' commands to GGT 'gt' commands

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 16:13:06 -08:00
Steve Yegge
b6f2281f13 feat: add gt mayor restart command
Complete the mayor command set for GGT cutover.
Now have: start, stop, attach, status, restart.

Skipped wake-queue as it's part of the pooling model
being deprecated in favor of ephemeral polecats (gt-7ik).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 15:50:18 -08:00
Steve Yegge
74febe77df chore(beads): sync issue gt-f9x.4 closed 2025-12-17 15:48:37 -08:00
Steve Yegge
d0f3ad9140 feat(doctor): add health check framework (gt-f9x.4)
Add doctor package with:
- Check interface for implementing health checks
- CheckContext for passing context to checks
- CheckResult and CheckStatus types
- Report with summary and pretty printing
- Doctor runner with Run() and Fix() methods
- BaseCheck and FixableCheck for easy check implementation
- CLI command: gt doctor [--fix] [--verbose] [--rig <name>]

Built-in checks will be added in:
- gt-f9x.5: Town-level checks (config, state, mail, rigs)
- gt-f9x.6: Rig-level checks (refinery, clones, gitignore)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 15:48:13 -08:00
Steve Yegge
17593844ce feat: add gt mayor commands for Mayor session management
Add four new commands for managing the Mayor tmux session:
- gt mayor start  - Start the Mayor session
- gt mayor attach - Attach to running session
- gt mayor stop   - Stop the session
- gt mayor status - Check if session is running

This allows full replacement of PGT's town mayor commands.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 15:36:56 -08:00
Steve Yegge
7aea3c5f65 chore: sync beads issues 2025-12-17 15:03:39 -08:00
Steve Yegge
542bc32b00 fix(polecat): code review fixes
- Use errors.Is() instead of direct error comparison
- Add warning output when listing polecats fails for a rig
- Remove extra blank line

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:59:04 -08:00
Steve Yegge
fb4c71692a Merge polecat/Rictus: polecat CLI commands 2025-12-17 14:55:42 -08:00
Steve Yegge
fe8187dae7 Merge polecat/Morsov: MR state transitions 2025-12-17 14:55:42 -08:00
Steve Yegge
33c645c1f3 Merge polecat/Slit: MR ID generation 2025-12-17 14:55:42 -08:00
Steve Yegge
ce7ca52e98 feat(refinery): implement MR state transition validation (gt-h5n.3)
- Update MRStatus to use beads-style statuses (open, in_progress, closed)
- Add CloseReason enum for tracking why MRs were closed
- Implement ValidateTransition() to enforce valid state transitions:
  - open → in_progress (Engineer claims MR)
  - in_progress → closed (merge success or rejection)
  - in_progress → open (failure, reassign to worker)
  - open → closed (manual rejection)
  - closed → anything is blocked (immutable once closed)
- Add convenience methods: Claim(), Close(), Reopen(), SetStatus()
- Add status check methods: IsClosed(), IsOpen(), IsInProgress()
- Update ProcessMR and completeMR to use new state transition methods
- Update display code to handle new status values
- Add comprehensive tests for state transitions

Reference: docs/merge-queue-design.md#state-machine

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:54:52 -08:00
Steve Yegge
1e422eb6bd chore: close gt-u1j.17 polecat CLI commands 2025-12-17 14:52:45 -08:00
Steve Yegge
2af8e6d190 feat: add polecat CLI commands (list, add, remove, wake, sleep)
Implements gt polecat subcommands for managing polecats in rigs:
- list: Show polecats with state, issue, and session status
- add: Create new polecat with clone and work branch
- remove: Delete polecat (checks for running session, uncommitted changes)
- wake: Transition idle → active
- sleep: Transition active → idle (checks for running session)

Resolves: gt-u1j.17

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:52:26 -08:00
Steve Yegge
f011e9bc80 feat(beads): add MR field parsing for merge-request issues
Implement ParseMRFields and SetMRFields helper functions to extract
and update structured fields in merge-request issue descriptions.

Fields supported: branch, target, source_issue, worker, rig,
merge_commit, close_reason.

Features:
- Case-insensitive key matching
- Alternate key formats (snake_case, kebab-case)
- Preserves non-MR prose content
- Handles mixed MR fields and prose
- Round-trip safe (parse then format preserves data)

Closes: gt-h5n.1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:50:34 -08:00
Steve Yegge
0c7316235e feat: add MR ID generation for merge queue
Implement GenerateMRID(prefix, branch) to generate merge request IDs
following the convention: <prefix>-mr-<hash>

- Hash derived from branch name + timestamp + random bytes for uniqueness
- Example output: gt-mr-abc123
- Includes deterministic variant for testing (GenerateMRIDWithTime)

Closes: gt-h5n.2

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:49:52 -08:00
Steve Yegge
ec29ca0738 feat: polecats run with --dangerously-skip-permissions
Gas Town is for grownups. Polecats now start Claude with full
permissions to enable autonomous operation without prompts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:45:00 -08:00
Steve Yegge
be26248037 Merge polecat/Nux: beads CLI wrapper (gt-u1j.13) 2025-12-17 14:33:07 -08:00
Steve Yegge
454ff0993d fix: SendKeys sends Enter separately for reliable submission
The previous implementation passed Enter as an argument to send-keys,
but this doesn't work reliably with long pasted text or Claude Code's
paste detection. Now uses -l flag for literal text and sends Enter
as a separate command.

Fixes gt-1su.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:32:18 -08:00
Steve Yegge
c598e3b549 feat: add beads CLI wrapper package (gt-u1j.13)
Implements the internal/beads package for shelling out to the bd CLI.

Interface:
- New(workDir) - constructor
- List(opts) - query issues with filters
- Ready() - get issues not blocked
- Blocked() - get blocked issues
- Show(id) - get issue details
- Create(opts) - create new issue
- Update(id, opts) - update issue
- Close(ids...) - close issues
- AddDependency/RemoveDependency - manage deps
- Sync/SyncFromMain/SyncStatus - sync operations

Error handling:
- ErrNotInstalled - bd binary not found
- ErrNotARepo - not a beads repository
- ErrSyncConflict - sync conflict detected
- ErrNotFound - issue not found

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:30:58 -08:00
Steve Yegge
4853adb788 chore: sync beads after dogfooding session
New issues filed during GGT testing:
- gt-1su: Spawn inject Enter not submitted (P1 bug)
- gt-0pl: Polecat auto-approve config needed (P1 task)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 14:16:19 -08:00
Steve Yegge
04c345b212 feat: add merge queue implementation plan to beads
Created detailed implementation beads from docs/merge-queue-design.md:

Foundation (P0, ready):
- gt-h5n.1: MR field parsing
- gt-h5n.2: MR ID generation
- gt-h5n.3: MR state transitions

CLI Commands (P0, under gt-svi):
- gt-svi.1: gt mq submit
- gt-svi.2: gt mq list
- gt-svi.3: gt mq status
- gt-svi.4: gt mq retry
- gt-svi.5: gt mq reject

Engineer Processing (P1, under gt-3x1):
- gt-3x1.1: Main loop
- gt-3x1.2: Fetch and conflict check
- gt-3x1.3: Merge execution
- gt-3x1.4: Failure handling
- gt-3x1.5: Success handling

Integration Branches (P1):
- gt-h5n.4-7: create, land, status, auto-target

Configuration & Advanced (P1-P3):
- gt-h5n.8-15: config, metrics, dashboard, rollback

Also added dependency planning guidance to CLAUDE.md to prevent
inverted dependency mistakes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 13:54:01 -08:00
Steve Yegge
53a70ea747 docs: add merge queue design document
Comprehensive design for the Beads-based merge queue:
- Merge-request schema (type, fields, ID convention)
- Queue ordering (dependencies, priority, age)
- Engineer processing loop with failure handling
- CLI commands (gt mq submit/list/status/integration)
- Integration branches for batch work
- HOP framing (validation layer, entity chains)
- Configuration options and observability

Closes gt-yls.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 13:44:13 -08:00
Steve Yegge
97aef02ac2 docs: add strategic context indirection for HOP guidance
Points Mayor to ~/ai/stevey-gastown/hop/CONTEXT.md for broader architectural direction.
2025-12-17 01:00:58 -08:00
Steve Yegge
e1c041f3b0 fix: spawn and swarm bug fixes from MVP testing
- spawn.go: Parse bd show --json as array, fix issue_type json tag
- session/manager.go: Check filesystem directly in hasPolecat()
  to handle newly-created polecats
- swarm/manager.go: Use bd show to get children via dependents field
  instead of non-existent bd list --parent flag

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 22:07:13 -08:00
Steve Yegge
59921d52c8 feat: refactor mail system to use bd mail backend
- Mail commands (send/inbox/read/delete) now wrap bd mail CLI
- Address translation: mayor/ → mayor, rig/polecat → rig-polecat
- Beads stores messages as type=message issues
- Legacy JSONL mode retained for crew workers (local mail)
- Refinery notifications use new mail interface
- Swarm landing notifications use new mail interface

Closes gt-u1j.6, gt-u1j.12

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-16 21:45:42 -08:00
Steve Yegge
9e4cdba5d0 chore: update beads for MVP cutover analysis
- Close gt-r01: Beads mail now available (bd mail commands)
- Close gt-u1j.14: Merge queue already implemented
- Update gt-u1j.6: Refactor to wrap bd mail
- Update gt-u1j.12: CLI commands to wrap bd mail
- Add gt-u1j.6/12 as dependencies for gt-b1g
- Demote gt-u1j.9 to P1 (not a cutover blocker)

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-16 21:37:21 -08:00
Steve Yegge
b56977218b feat: add gt crew commands (list, attach, remove, refresh, status)
Add remaining crew subcommands for user-managed workspaces:

- gt crew list: List crew workspaces with session/git status
- gt crew at/attach: Start or attach to tmux session
- gt crew remove: Remove workspace with safety checks
- gt crew refresh: Context cycling with mail-to-self handoff
- gt crew status: Show detailed workspace status with mail info

All commands support --rig flag for explicit rig selection and
--json output where appropriate.

Closes: gt-cik.9

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 20:57:26 -08:00
Steve Yegge
ec651072b1 Merge gt-cik.2-furiosa: add gt crew add command 2025-12-16 20:51:52 -08:00
Steve Yegge
e2bef6c500 Merge remote-tracking branch 'origin/gt-cik.8-keeper' 2025-12-16 20:49:26 -08:00
Steve Yegge
887c0f19d1 feat: add gt crew add command for user-managed workspaces
Implements gt-cik.2: Create crew workspace command with:
- internal/crew/types.go: CrewWorker type definition
- internal/crew/manager.go: Manager for crew lifecycle
- internal/crew/manager_test.go: Unit tests
- internal/cmd/crew.go: CLI command with --rig and --branch flags

Crew workers are user-managed persistent workspaces that:
- Clone repo into <rig>/crew/<name>/
- Create optional feature branch (crew/<name>)
- Set up mail directory for delivery
- Initialize CLAUDE.md with crew worker prompting
- Are NOT registered with witness (user-managed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 20:46:52 -08:00
Steve Yegge
640022acdf feat: add crew worker CLAUDE.md prompting template
- Create prompts/roles/crew.md template for crew workers
- Document crew worker role as overseer's personal workspace
- Include mail-to-self handoff instructions for context cycling
- Document gt crew refresh command usage
- Explain no witness monitoring (user-managed lifecycle)
- Include conditional beads usage when BEADS_DIR configured
- Update docs/prompts.md with crew role documentation

Closes: gt-cik.8

Generated with Claude Code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 20:45:57 -08:00
Steve Yegge
05f692cc2f feat: add crew directory structure and manager
Add crew/ directory support to rig structure for user-managed
persistent workspaces. Crew workers are separate from polecats
(AI-managed) and can have optional custom BEADS_DIR configuration.

- Add internal/crew package with Worker type and Manager
- Update rig types to include Crew slice and CrewCount in summary
- Update rig manager to scan for crew workers
- Add crew/ to AgentDirs for rig initialization

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 20:31:18 -08:00
Steve Yegge
0c9c3f5563 docs: expand federation section with Outpost architecture
- Replace stub "Future: Federation" with comprehensive section
- Add Outpost interface and Worker interface definitions
- Document Cloud Run workers with persistent connections
- Document SSH/VM outposts for long-running work
- Add configuration example (outposts.yaml)
- Add architecture diagram showing outpost hierarchy
- Add Key Design Decision #14: Outpost Abstraction

Also reopened gt-u1j.6 and gt-u1j.12 (mail tasks) since beads
mail support (bd-kwro) is not yet complete.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 18:07:15 -08:00
Steve Yegge
fdbbd82457 docs: add federation architecture design document
Comprehensive analysis of Gas Town federation via "Outposts" abstraction:
- LocalOutpost: current tmux model
- SSHOutpost: full Gas Town clone on VM
- CloudRunOutpost: elastic container workers

Key insights:
- Persistent HTTP/2 connections solve Cloud Run cold start
- ~$0.017 per 5-min worker session vs $50-200/mo VM
- Git remains source of truth for code and beads
- Local-first, remote for overflow/burst

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 18:04:10 -08:00
Steve Yegge
86625df15d docs: eliminate Swarm ID concept, adopt stream model
Key Decision #11 renamed from "Beads as Swarm State" to "Work is a Stream
(No Swarm IDs)". Work flows through the system as a continuous stream:

- The epic IS the grouping (no separate swarm ID)
- The merge queue IS the coordination (no batch boundaries)
- Workers process issues independently (add/remove anytime)
- Dependencies provide sequencing (multi-wave emerges naturally)

Updated sections:
- Introduction: Added key insight about stream model
- Work Dispatch: Renamed from "Swarm Dispatch", updated diagram
- Multi-Wave Work Processing: Renamed from "Multi-Wave Swarms"
- Key Decision #11: Full rewrite explaining stream model
- Various terminology updates throughout

This aligns with the vision that Gas Town manages work as a stream,
not as discrete batches requiring explicit start/end boundaries.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 17:27:51 -08:00
Steve Yegge
18c17d8538 docs: add crew/ directory to rig structure
Crew workspaces are the overseer's (human's personal workspaces within
a rig. Unlike polecats which are witness-managed and ephemeral, crew
workers are:
- Persistent (not auto-garbage-collected)
- User-managed (overseer controls lifecycle)
- Long-lived identities (dave, emma, fred)
- Gas Town integrated (mail, handoff mechanics)
- Tmux optional

See gt-cik for implementation epic.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
EOF
)
2025-12-16 16:49:49 -08:00
Steve Yegge
a1de1c74d6 feat: add refinery mail notifications for conflict handling
- notifyWorkerConflict: Mail worker with rebase instructions on conflict
- notifyWorkerMerged: Mail worker on successful merge
- findTownRoot: Walk up to find workspace for mail routing
- High priority notification for conflicts
- Integrates with mail system for agent communication

This completes the semantic merge handling for MVP - conflicts
are intelligently handled by notifying workers rather than
silently failing.

Closes gt-kmn.4

Generated with Claude Code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 14:24:19 -08:00
Steve Yegge
f8c177e17b feat: add witness swarm landing protocol
- ExecuteLanding: Full landing protocol for swarms
- Phase 1: Stop all polecat sessions
- Phase 2: Git audit (uncommitted/unpushed detection)
- Phase 3: Branch cleanup
- Phase 4: Mail notification to Mayor
- Code at risk detection with escalation
- Beads-only changes considered safe
- Updated gt swarm land to use full protocol

Closes gt-kmn.6

Generated with Claude Code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 14:22:52 -08:00
Steve Yegge
163b06582c feat: add refinery merge queue processing loop
- ProcessQueue: iterates pending MRs and processes each
- ProcessMR: fetch, merge, test, push workflow
- Conflict detection with merge abort
- Test integration via configurable test_command
- Automatic branch cleanup after successful merge
- Stats tracking (merged/failed counts)
- 10-second polling loop in foreground mode

Closes gt-ov2

Generated with Claude Code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 14:20:36 -08:00
Steve Yegge
e984a55fe5 feat: add mail system and CLI commands
- internal/mail: Message types with priority support
- internal/mail: Mailbox JSONL operations (list, get, append, delete)
- internal/mail: Router for address resolution and delivery
- gt mail send: Send messages to agents
- gt mail inbox: List messages (--unread, --json)
- gt mail read: Read and mark messages as read
- Address formats: mayor/, rig/, rig/polecat, rig/refinery
- High priority messages trigger tmux notification
- Auto-detect sender from GT_RIG/GT_POLECAT env vars

Closes gt-u1j.6, gt-u1j.12

Generated with Claude Code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 14:19:15 -08:00