@@ -184,10 +184,9 @@ func runMayorStatusLine(t *tmux.Tmux) error {
184184
185185 // Track per-rig status for LED indicators and sorting
186186 type rigStatus struct {
187- hasWitness bool
188- hasRefinery bool
189- polecatCount int
190- opState string // "OPERATIONAL", "PARKED", or "DOCKED"
187+ hasWitness bool
188+ hasRefinery bool
189+ opState string // "OPERATIONAL", "PARKED", or "DOCKED"
191190 }
192191 rigStatuses := make (map [string ]* rigStatus )
193192
@@ -202,10 +201,8 @@ func runMayorStatusLine(t *tmux.Tmux) error {
202201 working int
203202 }
204203 healthByType := map [AgentType ]* agentHealth {
205- AgentPolecat : {},
206204 AgentWitness : {},
207205 AgentRefinery : {},
208- AgentDeacon : {},
209206 }
210207
211208 // Single pass: track rig status AND agent health
@@ -215,7 +212,8 @@ func runMayorStatusLine(t *tmux.Tmux) error {
215212 continue
216213 }
217214
218- // Track rig-level status (witness/refinery/polecat presence)
215+ // Track rig-level status (witness/refinery presence)
216+ // Polecats are not tracked in tmux - they're a GC concern, not a display concern
219217 if agent .Rig != "" && registeredRigs [agent .Rig ] {
220218 if rigStatuses [agent .Rig ] == nil {
221219 rigStatuses [agent .Rig ] = & rigStatus {}
@@ -225,8 +223,6 @@ func runMayorStatusLine(t *tmux.Tmux) error {
225223 rigStatuses [agent .Rig ].hasWitness = true
226224 case AgentRefinery :
227225 rigStatuses [agent .Rig ].hasRefinery = true
228- case AgentPolecat :
229- rigStatuses [agent .Rig ].polecatCount ++
230226 }
231227 }
232228
@@ -254,9 +250,10 @@ func runMayorStatusLine(t *tmux.Tmux) error {
254250 var parts []string
255251
256252 // Add per-agent-type health in consistent order
257- // Format: "1/10 😺 " = 1 working out of 10 total
253+ // Format: "1/3 👁️ " = 1 working out of 3 total
258254 // Only show agent types that have sessions
259- agentOrder := []AgentType {AgentPolecat , AgentWitness , AgentRefinery , AgentDeacon }
255+ // Note: Polecats and Deacon excluded - idle state display is misleading noise
256+ agentOrder := []AgentType {AgentWitness , AgentRefinery }
260257 var agentParts []string
261258 for _ , agentType := range agentOrder {
262259 health := healthByType [agentType ]
@@ -287,7 +284,7 @@ func runMayorStatusLine(t *tmux.Tmux) error {
287284 rigs = append (rigs , rigInfo {name : rigName , status : status })
288285 }
289286
290- // Sort by: 1) running state, 2) polecat count (desc), 3) operational state, 4 ) alphabetical
287+ // Sort by: 1) running state, 2) operational state, 3 ) alphabetical
291288 sort .Slice (rigs , func (i , j int ) bool {
292289 isRunningI := rigs [i ].status .hasWitness || rigs [i ].status .hasRefinery
293290 isRunningJ := rigs [j ].status .hasWitness || rigs [j ].status .hasRefinery
@@ -297,20 +294,15 @@ func runMayorStatusLine(t *tmux.Tmux) error {
297294 return isRunningI
298295 }
299296
300- // Secondary sort: polecat count (descending)
301- if rigs [i ].status .polecatCount != rigs [j ].status .polecatCount {
302- return rigs [i ].status .polecatCount > rigs [j ].status .polecatCount
303- }
304-
305- // Tertiary sort: operational state (for non-running rigs: OPERATIONAL < PARKED < DOCKED)
297+ // Secondary sort: operational state (for non-running rigs: OPERATIONAL < PARKED < DOCKED)
306298 stateOrder := map [string ]int {"OPERATIONAL" : 0 , "PARKED" : 1 , "DOCKED" : 2 }
307299 stateI := stateOrder [rigs [i ].status .opState ]
308300 stateJ := stateOrder [rigs [j ].status .opState ]
309301 if stateI != stateJ {
310302 return stateI < stateJ
311303 }
312304
313- // Quaternary sort: alphabetical
305+ // Tertiary sort: alphabetical
314306 return rigs [i ].name < rigs [j ].name
315307 })
316308
@@ -352,17 +344,12 @@ func runMayorStatusLine(t *tmux.Tmux) error {
352344 }
353345 }
354346
355- // Show polecat count if > 0
356347 // All icons get 1 space, Park gets 2
357348 space := " "
358349 if led == "🅿️" {
359350 space = " "
360351 }
361- display := led + space + rig .name
362- if status .polecatCount > 0 {
363- display += fmt .Sprintf ("(%d)" , status .polecatCount )
364- }
365- rigParts = append (rigParts , display )
352+ rigParts = append (rigParts , led + space + rig .name )
366353 }
367354
368355 if len (rigParts ) > 0 {
@@ -421,7 +408,6 @@ func runDeaconStatusLine(t *tmux.Tmux) error {
421408 }
422409
423410 rigs := make (map [string ]bool )
424- polecatCount := 0
425411 for _ , s := range sessions {
426412 agent := categorizeSession (s )
427413 if agent == nil {
@@ -431,16 +417,13 @@ func runDeaconStatusLine(t *tmux.Tmux) error {
431417 if agent .Rig != "" && registeredRigs [agent .Rig ] {
432418 rigs [agent .Rig ] = true
433419 }
434- if agent .Type == AgentPolecat && registeredRigs [agent .Rig ] {
435- polecatCount ++
436- }
437420 }
438421 rigCount := len (rigs )
439422
440423 // Build status
424+ // Note: Polecats excluded - they're ephemeral and idle detection is a GC concern
441425 var parts []string
442426 parts = append (parts , fmt .Sprintf ("%d rigs" , rigCount ))
443- parts = append (parts , fmt .Sprintf ("%d 😺" , polecatCount ))
444427
445428 // Priority 1: Check for hooked work (town beads for deacon)
446429 hookedWork := ""
@@ -466,7 +449,8 @@ func runDeaconStatusLine(t *tmux.Tmux) error {
466449}
467450
468451// runWitnessStatusLine outputs status for a witness session.
469- // Shows: polecat count, crew count, hook or mail preview
452+ // Shows: crew count, hook or mail preview
453+ // Note: Polecats excluded - they're ephemeral and idle detection is a GC concern
470454func runWitnessStatusLine (t * tmux.Tmux , rigName string ) error {
471455 if rigName == "" {
472456 // Try to extract from session name: gt-<rig>-witness
@@ -483,33 +467,27 @@ func runWitnessStatusLine(t *tmux.Tmux, rigName string) error {
483467 townRoot , _ = workspace .Find (paneDir )
484468 }
485469
486- // Count polecats and crew in this rig
470+ // Count crew in this rig (crew are persistent, worth tracking)
487471 sessions , err := t .ListSessions ()
488472 if err != nil {
489473 return nil // Silent fail
490474 }
491475
492- polecatCount := 0
493476 crewCount := 0
494477 for _ , s := range sessions {
495478 agent := categorizeSession (s )
496479 if agent == nil {
497480 continue
498481 }
499- if agent .Rig == rigName {
500- if agent .Type == AgentPolecat {
501- polecatCount ++
502- } else if agent .Type == AgentCrew {
503- crewCount ++
504- }
482+ if agent .Rig == rigName && agent .Type == AgentCrew {
483+ crewCount ++
505484 }
506485 }
507486
508487 identity := fmt .Sprintf ("%s/witness" , rigName )
509488
510489 // Build status
511490 var parts []string
512- parts = append (parts , fmt .Sprintf ("%d 😺" , polecatCount ))
513491 if crewCount > 0 {
514492 parts = append (parts , fmt .Sprintf ("%d crew" , crewCount ))
515493 }
0 commit comments