From 52194a5496ca26e7daeae9e04d5fd38259559793 Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Fri, 19 Dec 2025 20:23:18 -0800 Subject: [PATCH] fix(rig): check witness/state.json instead of witness/rig (gm-2ej) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Witnesses don't have git clones like other agents. The detection was checking for witness/rig which doesn't exist. Now correctly checks for witness/state.json which is created by AddRig. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- internal/rig/manager.go | 6 +++--- internal/rig/manager_test.go | 6 ++++++ internal/rig/types.go | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/rig/manager.go b/internal/rig/manager.go index 4916cdc3..3256be59 100644 --- a/internal/rig/manager.go +++ b/internal/rig/manager.go @@ -128,9 +128,9 @@ func (m *Manager) loadRig(name string, entry config.RigEntry) (*Rig, error) { } } - // Check for witness - witnessPath := filepath.Join(rigPath, "witness", "rig") - if _, err := os.Stat(witnessPath); err == nil { + // Check for witness (witnesses don't have clones, just state.json) + witnessStatePath := filepath.Join(rigPath, "witness", "state.json") + if _, err := os.Stat(witnessStatePath); err == nil { rig.HasWitness = true } diff --git a/internal/rig/manager_test.go b/internal/rig/manager_test.go index ef836658..42711d21 100644 --- a/internal/rig/manager_test.go +++ b/internal/rig/manager_test.go @@ -37,6 +37,12 @@ func createTestRig(t *testing.T, root, name string) { } } + // Create witness state.json (witnesses don't have clones, just state) + witnessState := filepath.Join(rigPath, "witness", "state.json") + if err := os.WriteFile(witnessState, []byte(`{"role":"witness"}`), 0644); err != nil { + t.Fatalf("write witness state: %v", err) + } + // Create some polecats polecatsDir := filepath.Join(rigPath, "polecats") for _, polecat := range []string{"Toast", "Cheedo"} { diff --git a/internal/rig/types.go b/internal/rig/types.go index ad74f6e3..0edc9d5b 100644 --- a/internal/rig/types.go +++ b/internal/rig/types.go @@ -37,11 +37,12 @@ type Rig struct { } // AgentDirs are the standard agent directories in a rig. +// Note: witness doesn't have a /rig subdirectory (no clone needed). var AgentDirs = []string{ "polecats", "crew", "refinery/rig", - "witness/rig", + "witness", "mayor/rig", }