From 4073638fa1daa852269c2151a8fb99923ccfe4aa Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Sat, 20 Dec 2025 23:35:22 -0800 Subject: [PATCH] fix: crew workers detected as polecat in gt handoff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add crew session detection before polecat (gt-*-crew-* pattern) - Crew workers exit immediately after sending handoff mail - No waiting for manager since crew is human-managed 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- internal/cmd/handoff.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/internal/cmd/handoff.go b/internal/cmd/handoff.go index aa39ef59..7fb24f02 100644 --- a/internal/cmd/handoff.go +++ b/internal/cmd/handoff.go @@ -126,6 +126,17 @@ func runHandoff(cmd *cobra.Command, args []string) error { // Send lifecycle request to manager manager := getManager(role) + + // Crew workers are human-managed - no automated manager to wait for + if role == RoleCrew { + fmt.Printf("\n%s Handoff complete\n", style.Bold.Render("✓")) + fmt.Println(style.Dim.Render("Crew workers are human-managed. To complete the cycle:")) + fmt.Println(style.Dim.Render(" 1. Exit this session (Ctrl+D or 'exit')")) + fmt.Println(style.Dim.Render(" 2. Run 'gt crew attach' to start fresh")) + fmt.Println(style.Dim.Render(" 3. New session will see handoff message in inbox")) + return nil + } + if err := sendLifecycleRequest(manager, role, action, townRoot); err != nil { return fmt.Errorf("sending lifecycle request: %w", err) } @@ -202,6 +213,10 @@ func detectHandoffRole() Role { if strings.HasSuffix(sessionName, "-refinery") { return RoleRefinery } + // Crew sessions: gt--crew- + if strings.Contains(sessionName, "-crew-") { + return RoleCrew + } // Polecat sessions: gt-- if strings.HasPrefix(sessionName, "gt-") && strings.Count(sessionName, "-") >= 2 { return RolePolecat