stablyai/orca · error · Error

This benchmark requires a Windows host with WSL

Error message

This benchmark requires a Windows host with WSL

What it means

Hard platform gate at the top of the WSL benchmark's main(): it refuses to run unless process.platform === 'win32'. The benchmark drives wsl.exe, which only exists on Windows, so on macOS/Linux it aborts immediately rather than producing confusing downstream failures.

Source

Thrown at config/scripts/wsl-hook-relay-reattach-benchmark.mjs:262

function percentile(samples, percentileValue) {
  const sorted = [...samples].sort((left, right) => left - right)
  return sorted[Math.ceil((percentileValue / 100) * sorted.length) - 1]
}

function summarize(samples) {
  return {
    samples: samples.length,
    medianMs: Number(percentile(samples, 50).toFixed(1)),
    p95Ms: Number(percentile(samples, 95).toFixed(1)),
    minMs: Number(Math.min(...samples).toFixed(1)),
    maxMs: Number(Math.max(...samples).toFixed(1))
  }
}

async function main() {
  if (process.platform !== 'win32') {
    throw new Error('This benchmark requires a Windows host with WSL')
  }
  const options = parseArgs(process.argv.slice(2))
  const distro = await resolveDistro(options.distro)
  const nodeVersion = await run(
    'wsl.exe',
    wslArgs(distro, [
      '/bin/sh',
      '-c',
      'for node_bin in "$(command -v node 2>/dev/null || true)" "$HOME/.local/bin/node"; do [ -x "$node_bin" ] || continue; "$node_bin" -p process.versions.node && exit 0; done; exit 1'
    ]),
    { allowFailure: true }
  )
  if (nodeVersion.status !== 0 || Number(nodeVersion.stdout.trim().split('.')[0]) < 18) {
    throw new Error(`WSL distro '${distro}' needs Node.js 18 or newer to run Orca's relay`)
  }

  const bundleDir = join(process.cwd(), 'out', 'relay', 'wsl')
  const bundlePath = join(bundleDir, 'wsl-agent-hook-relay.js')

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Run the benchmark on a Windows host (native or Windows CI runner).
  2. If invoking from a script, guard with `process.platform === 'win32'` before calling so non-Windows lanes skip cleanly.
  3. In CI, restrict this benchmark to the windows-latest job and skip it elsewhere.

Example fix

// before
if (process.platform !== 'win32') {
  throw new Error('This benchmark requires a Windows host with WSL')
}

// after — exit zero for CI skips, non-zero only when misinvoked
if (process.platform !== 'win32') {
  if (process.env.CI) { console.log('skip: requires Windows'); process.exit(0) }
  throw new Error('This benchmark requires a Windows host with WSL')
}
Defensive patterns

Strategy: validation

Validate before calling

// Skip cleanly on non-Windows in CI before invoking
if (process.platform !== 'win32' && process.env.CI) {
  console.log('skip: wsl benchmark requires Windows')
  process.exit(0)
}
if (process.platform !== 'win32') {
  throw new Error('This benchmark requires a Windows host with WSL')
}

Prevention

When it happens

Trigger: Executing `node config/scripts/wsl-hook-relay-reattach-benchmark.mjs` on a non-Windows OS (macOS dev machine, Linux CI runner).

Common situations: Running the full benchmark suite on a macOS/Linux developer machine, or a CI matrix that does not skip WSL benchmarks on non-Windows lanes.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/b31010d07b340655. Report an issue: GitHub.