Skip to content

flake: Windows test-go-pg infrastructure issue - mtimehash missing after mise cache miss #1630

Description

@flake-investigator

CI Run Link: https://github.com/coder/coder/actions/runs/30337867929
Failing Job: https://github.com/coder/coder/actions/runs/30337867929/job/90206689888 (test-go-pg (windows-2022))
Failure Date: 2026-07-28 07:20 UTC
Run Attempt: 1

Commit Info:

Failure Evidence:

2026-07-28T07:20:12.0716009Z Run find . -type f ! -path ./.git/\*\* | mtimehash
2026-07-28T07:20:12.1468408Z C:\actions-runner\_temp\98d5aa66-aad3-4fbc-a91f-28d0c4d663f6.sh: line 1: mtimehash: command not found
2026-07-28T07:20:12.2648974Z ##[error]Process completed with exit code 127.

The complete 1,231-line job log was reviewed. The Windows job failed before any Go tests ran. Linux and macOS test-go-pg jobs, test-go-pg-17, and test-go-race-pg succeeded.

Root Cause Classification: Infrastructure / CI tooling

Root Cause Analysis:

  • .github/workflows/ci.yaml runs the Install Go mise tools step without an explicit shell:
    - name: Install Go mise tools
      run: ./.github/scripts/retry.sh -- mise install --locked go:gotest.tools/gotestsum go:github.com/slsyy/mtimehash/cmd/mtimehash
  • On Windows, the default shell is PowerShell, but .github/scripts/retry.sh is a Bash script.
  • On the cache-miss path, that step silently does not install mtimehash; the job log contains no installation output despite the step reporting success.
  • The later Bash timestamp-normalization step invokes mtimehash and exits 127.
  • A warm mise cache masks the defect, making the failure intermittent.
  • This is unrelated to the frontend-only commit under test.

Existing Fix:

  • ci: run test-go-pg mise tool install under bash on Windows coder#27483 adds shell: bash to this exact install step. Its description documents the same mtimehash: command not found cache-miss failure mode.
  • Verified proposed diff:
     - name: Install Go mise tools
    +  shell: bash
       run: ./.github/scripts/retry.sh -- mise install --locked go:gotest.tools/gotestsum go:github.com/slsyy/mtimehash/cmd/mtimehash

Assignment Analysis:

  • No test function failed, so test-function blame is not applicable.
  • Component ownership/history used:
    • git log --oneline -20 --follow .github/workflows/ci.yaml
    • git log --oneline -20 --follow .github/actions/setup-mise/action.yml
    • git log --oneline -20 --follow mise.toml
  • The exact Install Go mise tools workflow line was introduced by fe257666d7709192fca7b1a80019d7d019915c71 / ci: refactor CI to use mise for shared tool setup coder#25727 (ci: refactor CI to use mise for shared tool setup) by @ThomasK33.
  • Assigning to @ThomasK33 based on ownership of the exact CI setup path, not the author of the failing run.

Duplicate Search:

  • Searched coder/internal for mtimehash, "mtimehash: command not found", "Normalize File and Directory Timestamps", "mise-shim.exe not found", test-go-pg Windows, Windows cache flakes, and recent closed issues (last 30 days).
  • No matching internal issue was found.
  • Related but different: flake: Windows CI mise install fails for vercel (node not found) #1596 (vercel mise install failure on Windows).

Race / Panic / OOM / Resource Checks:

  • No WARNING: DATA RACE or race-detector failure.
  • No panic, runtime error, OOM, killed process, disk exhaustion, or file-descriptor exhaustion indicators.
  • The failure is the direct shell error shown above.

Reproduction:

  1. Use a Windows runner with an empty mise cache.
  2. Run the current test-go-pg setup through Install Go mise tools without shell: bash.
  3. Run find . -type f ! -path ./.git/\*\* | mtimehash under Bash.
  4. Observe mtimehash: command not found and exit code 127.

Suggested Resolution:

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions