Skip to content

feat(watchdog): detect polecat sessions stuck at idle prompt#3297

Closed
quad341 wants to merge 1 commit intogastownhall:mainfrom
quad341:polecat/jasper/gas-xrp
Closed

feat(watchdog): detect polecat sessions stuck at idle prompt#3297
quad341 wants to merge 1 commit intogastownhall:mainfrom
quad341:polecat/jasper/gas-xrp

Conversation

@quad341
Copy link
Copy Markdown
Contributor

@quad341 quad341 commented Mar 26, 2026

Summary

  • idle_prompt.go: Detects polecat tmux sessions stuck at Claude Code idle prompt
  • Captures tmux pane, matches idle prompt pattern, confirms after wait period
  • Integrates with witness patrol — checks working polecats each cycle
  • 318 lines of tests covering detection, false positive avoidance (thinking indicators), and confirmation flow
  • Configurable interval and confirmation wait time

Test plan

  • go test ./internal/witness/... passes
  • Working polecat that finishes → detected as idle within configured interval
  • Actively thinking polecat → NOT flagged as idle

🤖 Generated with Claude Code

Adds a two-phase idle-prompt watchdog to the witness patrol. When a polecat
has hooked work but is sitting at the Claude Code ❯ idle prompt, the witness
now:

  1. Records the first-seen-idle timestamp in witness/idle-prompt-state.json
  2. After IdlePromptGrace (default 2m), nudges the polecat to run `gt done`
  3. After IdlePromptThreshold (default 15m) from the nudge, classifies the
     session as ZombieAtIdlePrompt and surfaces it via patrol scan --notify

Detection uses the existing tmux.IsIdle() which checks for:
- Absence of "esc to interrupt" status bar indicator (rules out active work
  and all thinking states: Pondering, Whisking, Cogitated, etc.)
- Presence of the ❯ ready-prompt prefix

New ZombieClassification values:
  - at-idle-prompt-nudged: first detection, nudge sent
  - at-idle-prompt: confirmed stuck after threshold, for mayor notification

Both classify as ImpliesActiveWork=true so patrol --notify picks them up.

Thresholds are configurable via operational.witness in settings/config.json:
  idle_prompt_grace (default "2m"), idle_prompt_threshold (default "15m")

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions github-actions bot added the status/needs-triage Inbox — we haven't looked at it yet label Mar 26, 2026
@codecov-commenter
Copy link
Copy Markdown

❌ 13 Tests Failed:

Tests completed Failed Passed Skipped
9332 13 9319 48
View the top 3 failed test(s) by shortest run time
github.com/steveyegge/gastown/internal/cmd::TestBuildRefineryPatrolVars_FullConfig
Stack Traces | 0s run time
=== RUN   TestBuildRefineryPatrolVars_FullConfig
    patrol_helpers_test.go:166: expected 5 vars, got 7: [target_branch=main integration_branch_refinery_enabled=true integration_branch_auto_land=false run_tests=true delete_merged_branches=true judgment_enabled=false review_depth=standard]
--- FAIL: TestBuildRefineryPatrolVars_FullConfig (0.00s)
github.com/steveyegge/gastown/internal/cmd::TestClassifySchemaChange
Stack Traces | 0s run time
=== RUN   TestClassifySchemaChange
=== PAUSE TestClassifySchemaChange
=== CONT  TestClassifySchemaChange
    testing.go:1712: race detected during execution of test
--- FAIL: TestClassifySchemaChange (0.00s)
=== RUN   TestClassifySchemaChange/1.0->1.0
=== PAUSE TestClassifySchemaChange/1.0->1.0
=== CONT  TestClassifySchemaChange/1.0->1.0
--- PASS: TestClassifySchemaChange/1.0->1.0 (0.00s)
=== RUN   TestClassifySchemaChange/2.5->2.5
=== PAUSE TestClassifySchemaChange/2.5->2.5
=== CONT  TestClassifySchemaChange/2.5->2.5
--- PASS: TestClassifySchemaChange/2.5->2.5 (0.00s)
=== RUN   TestClassifySchemaChange/1.0->1.1
=== PAUSE TestClassifySchemaChange/1.0->1.1
=== CONT  TestClassifySchemaChange/1.0->1.1
--- PASS: TestClassifySchemaChange/1.0->1.1 (0.00s)
=== RUN   TestClassifySchemaChange/1.0->1.9
=== PAUSE TestClassifySchemaChange/1.0->1.9
=== CONT  TestClassifySchemaChange/1.0->1.9
--- PASS: TestClassifySchemaChange/1.0->1.9 (0.00s)
=== RUN   TestClassifySchemaChange/2.0->2.1
=== PAUSE TestClassifySchemaChange/2.0->2.1
=== CONT  TestClassifySchemaChange/2.0->2.1
--- PASS: TestClassifySchemaChange/2.0->2.1 (0.00s)
=== RUN   TestClassifySchemaChange/1.0->2.0
=== PAUSE TestClassifySchemaChange/1.0->2.0
=== CONT  TestClassifySchemaChange/1.0->2.0
--- PASS: TestClassifySchemaChange/1.0->2.0 (0.00s)
=== RUN   TestClassifySchemaChange/1.5->2.0
=== PAUSE TestClassifySchemaChange/1.5->2.0
=== CONT  TestClassifySchemaChange/1.5->2.0
--- PASS: TestClassifySchemaChange/1.5->2.0 (0.00s)
=== RUN   TestClassifySchemaChange/1.9->3.0
=== PAUSE TestClassifySchemaChange/1.9->3.0
=== CONT  TestClassifySchemaChange/1.9->3.0
--- PASS: TestClassifySchemaChange/1.9->3.0 (0.00s)
=== RUN   TestClassifySchemaChange/1.1->1.0
=== PAUSE TestClassifySchemaChange/1.1->1.0
=== CONT  TestClassifySchemaChange/1.1->1.0
--- PASS: TestClassifySchemaChange/1.1->1.0 (0.00s)
=== RUN   TestClassifySchemaChange/2.0->1.9
=== PAUSE TestClassifySchemaChange/2.0->1.9
=== CONT  TestClassifySchemaChange/2.0->1.9
--- PASS: TestClassifySchemaChange/2.0->1.9 (0.00s)
github.com/steveyegge/gastown/internal/cmd::TestParseSchemaVersion_Invalid
Stack Traces | 0s run time
=== RUN   TestParseSchemaVersion_Invalid
=== PAUSE TestParseSchemaVersion_Invalid
=== CONT  TestParseSchemaVersion_Invalid
    testing.go:1712: race detected during execution of test
--- FAIL: TestParseSchemaVersion_Invalid (0.00s)
=== RUN   TestParseSchemaVersion_Invalid/1
=== PAUSE TestParseSchemaVersion_Invalid/1
=== CONT  TestParseSchemaVersion_Invalid/1
--- PASS: TestParseSchemaVersion_Invalid/1 (0.00s)
=== RUN   TestParseSchemaVersion_Invalid/1.0.0
=== PAUSE TestParseSchemaVersion_Invalid/1.0.0
=== CONT  TestParseSchemaVersion_Invalid/1.0.0
--- PASS: TestParseSchemaVersion_Invalid/1.0.0 (0.00s)
=== RUN   TestParseSchemaVersion_Invalid/#00
=== PAUSE TestParseSchemaVersion_Invalid/#00
=== CONT  TestParseSchemaVersion_Invalid/#00
--- PASS: TestParseSchemaVersion_Invalid/#00 (0.00s)
=== RUN   TestParseSchemaVersion_Invalid/abc
=== PAUSE TestParseSchemaVersion_Invalid/abc
=== CONT  TestParseSchemaVersion_Invalid/abc
--- PASS: TestParseSchemaVersion_Invalid/abc (0.00s)
=== RUN   TestParseSchemaVersion_Invalid/1.x
=== PAUSE TestParseSchemaVersion_Invalid/1.x
=== CONT  TestParseSchemaVersion_Invalid/1.x
--- PASS: TestParseSchemaVersion_Invalid/1.x (0.00s)
=== RUN   TestParseSchemaVersion_Invalid/x.0
=== PAUSE TestParseSchemaVersion_Invalid/x.0
=== CONT  TestParseSchemaVersion_Invalid/x.0
--- PASS: TestParseSchemaVersion_Invalid/x.0 (0.00s)
github.com/steveyegge/gastown/internal/cmd::TestRunHooksSyncNonClaudeAgent
Stack Traces | 0.01s run time
=== RUN   TestRunHooksSyncNonClaudeAgent
Syncing hooks...
  ✓ mayor/.claude/settings.json (created)
  ✓ deacon/.claude/settings.json (created)
  ✓ myrig/crew/.claude/settings.json (created)
warning: role_agents[crew]=opencode - agent "opencode" binary "opencode" not found in PATH, falling back to default

Synced 3 targets (3 created, 0 updated, 0 unchanged)
    hooks_sync_test.go:366: opencode plugin not created in worktree alice
--- FAIL: TestRunHooksSyncNonClaudeAgent (0.01s)
github.com/steveyegge/gastown/internal/cmd::TestStampLoop_EndToEnd
Stack Traces | 0.01s run time
=== RUN   TestStampLoop_EndToEnd
=== PAUSE TestStampLoop_EndToEnd
=== CONT  TestStampLoop_EndToEnd
    testing.go:1712: race detected during execution of test
--- FAIL: TestStampLoop_EndToEnd (0.01s)
github.com/steveyegge/gastown/internal/cmd::TestStampLoop_InvalidValence
Stack Traces | 0.01s run time
=== RUN   TestStampLoop_InvalidValence
=== PAUSE TestStampLoop_InvalidValence
=== CONT  TestStampLoop_InvalidValence
--- FAIL: TestStampLoop_InvalidValence (0.01s)
github.com/steveyegge/gastown/internal/cmd::TestStampLoop_InvalidValence/quality_too_high
Stack Traces | 0.01s run time
=== RUN   TestStampLoop_InvalidValence/quality_too_high
    testing.go:1712: race detected during execution of test
--- FAIL: TestStampLoop_InvalidValence/quality_too_high (0.01s)
github.com/steveyegge/gastown/internal/cmd::TestTryAcquireSlingAssigneeLock_Contention
Stack Traces | 0.01s run time
=== RUN   TestTryAcquireSlingAssigneeLock_Contention
=== PAUSE TestTryAcquireSlingAssigneeLock_Contention
=== CONT  TestTryAcquireSlingAssigneeLock_Contention
==================
WARNING: DATA RACE
Read at 0x000003d0d4c8 by goroutine 3693:
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence.func1()
      .../internal/cmd/wl_stamp_loop_test.go:188 +0x64
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Previous write at 0x000003d0d4c8 by goroutine 3646:
  github..../gastown/internal/cmd.TestStampLoop_SelfStampFails()
      .../internal/cmd/wl_stamp_loop_test.go:143 +0x2ed
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3693 (running) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence()
      .../internal/cmd/wl_stamp_loop_test.go:187 +0x170
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3646 (finished) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  testing.runTests.func1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2585 +0x85
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.runTests()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2583 +0x9e9
  testing.(*M).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2443 +0xf4b
  main.main()
      _testmain.go:1954 +0x164
==================
==================
WARNING: DATA RACE
Read at 0x000003d0d4d0 by goroutine 3693:
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence.func1()
      .../internal/cmd/wl_stamp_loop_test.go:188 +0x7e
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Previous write at 0x000003d0d4d0 by goroutine 3646:
  github..../gastown/internal/cmd.TestStampLoop_SelfStampFails()
      .../internal/cmd/wl_stamp_loop_test.go:144 +0x30a
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3693 (running) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence()
      .../internal/cmd/wl_stamp_loop_test.go:187 +0x170
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3646 (finished) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  testing.runTests.func1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2585 +0x85
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.runTests()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2583 +0x9e9
  testing.(*M).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2443 +0xf4b
  main.main()
      _testmain.go:1954 +0x164
==================
==================
WARNING: DATA RACE
Read at 0x000003cd26b0 by goroutine 3693:
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence.func1()
      .../internal/cmd/wl_stamp_loop_test.go:189 +0x98
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Previous write at 0x000003cd26b0 by goroutine 3646:
  github..../gastown/internal/cmd.TestStampLoop_SelfStampFails()
      .../internal/cmd/wl_stamp_loop_test.go:146 +0x344
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3693 (running) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence()
      .../internal/cmd/wl_stamp_loop_test.go:187 +0x170
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3646 (finished) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  testing.runTests.func1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2585 +0x85
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.runTests()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2583 +0x9e9
  testing.(*M).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2443 +0xf4b
  main.main()
      _testmain.go:1954 +0x164
==================
==================
WARNING: DATA RACE
Read at 0x000003cd26c0 by goroutine 3693:
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence.func1()
      .../internal/cmd/wl_stamp_loop_test.go:189 +0xc4
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Previous write at 0x000003cd26c0 by goroutine 3646:
  github..../gastown/internal/cmd.TestStampLoop_SelfStampFails()
      .../internal/cmd/wl_stamp_loop_test.go:147 +0x384
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3693 (running) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence()
      .../internal/cmd/wl_stamp_loop_test.go:187 +0x170
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3646 (finished) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  testing.runTests.func1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2585 +0x85
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.runTests()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2583 +0x9e9
  testing.(*M).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2443 +0xf4b
  main.main()
      _testmain.go:1954 +0x164
==================
==================
WARNING: DATA RACE
Read at 0x000003cd26d0 by goroutine 3693:
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence.func1()
      .../internal/cmd/wl_stamp_loop_test.go:189 +0xeb
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Previous write at 0x000003cd26d0 by goroutine 3646:
  github..../gastown/internal/cmd.TestStampLoop_SelfStampFails()
      .../internal/cmd/wl_stamp_loop_test.go:148 +0x3c4
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3693 (running) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence()
      .../internal/cmd/wl_stamp_loop_test.go:187 +0x170
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3646 (finished) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  testing.runTests.func1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2585 +0x85
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.runTests()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2583 +0x9e9
  testing.(*M).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2443 +0xf4b
  main.main()
      _testmain.go:1954 +0x164
==================
    testing.go:1712: race detected during execution of test
--- FAIL: TestTryAcquireSlingAssigneeLock_Contention (0.01s)
github.com/steveyegge/gastown/internal/cmd::TestValidateConvoyStatusTransition
Stack Traces | 0.01s run time
=== RUN   TestValidateConvoyStatusTransition
=== PAUSE TestValidateConvoyStatusTransition
=== CONT  TestValidateConvoyStatusTransition
    testing.go:1712: race detected during execution of test
--- FAIL: TestValidateConvoyStatusTransition (0.01s)
=== RUN   TestValidateConvoyStatusTransition/open_to_closed
=== PAUSE TestValidateConvoyStatusTransition/open_to_closed
=== CONT  TestValidateConvoyStatusTransition/open_to_closed
--- PASS: TestValidateConvoyStatusTransition/open_to_closed (0.00s)
=== RUN   TestValidateConvoyStatusTransition/closed_to_open
=== PAUSE TestValidateConvoyStatusTransition/closed_to_open
=== CONT  TestValidateConvoyStatusTransition/closed_to_open
--- PASS: TestValidateConvoyStatusTransition/closed_to_open (0.00s)
=== RUN   TestValidateConvoyStatusTransition/same_open
=== PAUSE TestValidateConvoyStatusTransition/same_open
=== CONT  TestValidateConvoyStatusTransition/same_open
--- PASS: TestValidateConvoyStatusTransition/same_open (0.00s)
=== RUN   TestValidateConvoyStatusTransition/same_closed
=== PAUSE TestValidateConvoyStatusTransition/same_closed
=== CONT  TestValidateConvoyStatusTransition/same_closed
--- PASS: TestValidateConvoyStatusTransition/same_closed (0.00s)
=== RUN   TestValidateConvoyStatusTransition/unknown_current
=== PAUSE TestValidateConvoyStatusTransition/unknown_current
=== CONT  TestValidateConvoyStatusTransition/unknown_current
--- PASS: TestValidateConvoyStatusTransition/unknown_current (0.00s)
=== RUN   TestValidateConvoyStatusTransition/unknown_target
=== PAUSE TestValidateConvoyStatusTransition/unknown_target
=== CONT  TestValidateConvoyStatusTransition/unknown_target
--- PASS: TestValidateConvoyStatusTransition/unknown_target (0.00s)
github.com/steveyegge/gastown/internal/doctor::TestHooksSyncCheck_Fix_TemplateAgent
Stack Traces | 0.01s run time
=== RUN   TestHooksSyncCheck_Fix_TemplateAgent
warning: role_agents[crew]=opencode - agent "opencode" binary "opencode" not found in PATH, falling back to default
    hooks_sync_check_test.go:219: expected StatusWarning before fix, got OK
--- FAIL: TestHooksSyncCheck_Fix_TemplateAgent (0.01s)
github.com/steveyegge/gastown/internal/doctor::TestHooksSyncCheck_TemplateAgent_Missing
Stack Traces | 0.01s run time
=== RUN   TestHooksSyncCheck_TemplateAgent_Missing
warning: role_agents[crew]=opencode - agent "opencode" binary "opencode" not found in PATH, falling back to default
    hooks_sync_check_test.go:193: expected StatusWarning for missing template agent file, got OK: All 3 hook targets in sync
--- FAIL: TestHooksSyncCheck_TemplateAgent_Missing (0.01s)
github.com/steveyegge/gastown/internal/doctor::TestHooksSyncCheck_TemplateAgent_OutOfSync
Stack Traces | 0.01s run time
=== RUN   TestHooksSyncCheck_TemplateAgent_OutOfSync
warning: role_agents[crew]=opencode - agent "opencode" binary "opencode" not found in PATH, falling back to default
    hooks_sync_check_test.go:172: expected StatusWarning for out-of-sync template agent, got OK: All 3 hook targets in sync
--- FAIL: TestHooksSyncCheck_TemplateAgent_OutOfSync (0.01s)
github.com/steveyegge/gastown/internal/cmd::TestParseSchemaVersion_Valid
Stack Traces | 0.02s run time
=== RUN   TestParseSchemaVersion_Valid
=== PAUSE TestParseSchemaVersion_Valid
=== CONT  TestParseSchemaVersion_Valid
    testing.go:1712: race detected during execution of test
--- FAIL: TestParseSchemaVersion_Valid (0.02s)
=== RUN   TestParseSchemaVersion_Valid/1.0
=== PAUSE TestParseSchemaVersion_Valid/1.0
=== CONT  TestParseSchemaVersion_Valid/1.0
--- PASS: TestParseSchemaVersion_Valid/1.0 (0.00s)
=== RUN   TestParseSchemaVersion_Valid/2.3
=== PAUSE TestParseSchemaVersion_Valid/2.3
=== CONT  TestParseSchemaVersion_Valid/2.3
--- PASS: TestParseSchemaVersion_Valid/2.3 (0.00s)
=== RUN   TestParseSchemaVersion_Valid/0.0
=== PAUSE TestParseSchemaVersion_Valid/0.0
=== CONT  TestParseSchemaVersion_Valid/0.0
--- PASS: TestParseSchemaVersion_Valid/0.0 (0.00s)
=== RUN   TestParseSchemaVersion_Valid/10.42
=== PAUSE TestParseSchemaVersion_Valid/10.42
=== CONT  TestParseSchemaVersion_Valid/10.42
--- PASS: TestParseSchemaVersion_Valid/10.42 (0.00s)
=== RUN   TestParseSchemaVersion_Valid/_1.0_
==================
WARNING: DATA RACE
Read at 0x000003d0d4c0 by goroutine 3693:
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence.func1()
      .../internal/cmd/wl_stamp_loop_test.go:188 +0x45
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Previous write at 0x000003d0d4c0 by goroutine 3646:
  github..../gastown/internal/cmd.TestStampLoop_SelfStampFails()
      .../internal/cmd/wl_stamp_loop_test.go:142 +0x2d0
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3693 (running) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  github..../gastown/internal/cmd.TestStampLoop_InvalidValence()
      .../internal/cmd/wl_stamp_loop_test.go:187 +0x170
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.(*T).Run.gowrap1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0x38

Goroutine 3646 (finished) created at:
  testing.(*T).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2101 +0xb12
  testing.runTests.func1()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2585 +0x85
  testing.tRunner()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2036 +0x21c
  testing.runTests()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2583 +0x9e9
  testing.(*M).Run()
      .../hostedtoolcache/go/1.26.1.../src/testing/testing.go:2443 +0xf4b
  main.main()
      _testmain.go:1954 +0x164
==================
=== PAUSE TestParseSchemaVersion_Valid/_1.0_
=== CONT  TestParseSchemaVersion_Valid/_1.0_
--- PASS: TestParseSchemaVersion_Valid/_1.0_ (0.01s)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@steveyegge
Copy link
Copy Markdown
Collaborator

Closing ahead of v1.0.0 — Gas Town is transitioning to Gas City. If still relevant, please re-file against the new project.

@steveyegge steveyegge closed this Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status/needs-triage Inbox — we haven't looked at it yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants