{"record":{"id":"8ec3645df6f333ec","repo":"stablyai/orca","slug":"the-native-ibus-hangul-e2e-runner-requires-linux-x","errorCode":null,"errorMessage":"The native IBus Hangul E2E runner requires Linux/X11","messagePattern":"The native IBus Hangul E2E runner requires Linux/X11","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"config/scripts/run-terminal-ibus-hangul-e2e.mjs","lineNumber":247,"sourceCode":"    )\n  }\n\n  if (evidence.ibusGroupAfterCleanup.length > 0) {\n    throw new Error(\n      `Owned IBus processes survived cleanup: ${evidence.ibusGroupAfterCleanup.join('; ')}`\n    )\n  }\n  if (evidence.windowManagerGroupAfterCleanup.length > 0) {\n    throw new Error(\n      `Owned window-manager processes survived cleanup: ${evidence.windowManagerGroupAfterCleanup.join('; ')}`\n    )\n  }\n  return testExitCode\n}\n\nasync function runOuter() {\n  if (process.platform !== 'linux') {\n    throw new Error('The native IBus Hangul E2E runner requires Linux/X11')\n  }\n\n  const evidenceDir = mkdtempSync(path.join(os.tmpdir(), 'orca-terminal-ime-e2e-'))\n  const runtimeDir = path.join(evidenceDir, 'runtime')\n  mkdirSync(runtimeDir, { mode: 0o700 })\n  mkdirSync(path.join(evidenceDir, 'config'))\n  mkdirSync(path.join(evidenceDir, 'cache'))\n  console.error(`[terminal-ime] evidence directory: ${evidenceDir}`)\n\n  const sessionProcess = spawn(\n    'xvfb-run',\n    [\n      '--auto-servernum',\n      'dbus-run-session',\n      '--',\n      process.execPath,\n      scriptPath,\n      insideSessionFlag,","sourceCodeStart":229,"sourceCodeEnd":265,"githubUrl":"https://github.com/stablyai/orca/blob/1136503c6a231a16dce8f921f6fadb63d181e8db/config/scripts/run-terminal-ibus-hangul-e2e.mjs#L229-L265","documentation":"runOuter() is the entry point of the native IBus Hangul E2E runner. The very first guard rejects non-Linux hosts because the entire flow depends on X11, IBus, gsettings, xfwm4, and xvfb-run — none of which are available on macOS/Windows. Failing fast prevents confusing downstream spawn errors.","triggerScenarios":"Invoking the native IBus Hangul E2E script on macOS or Windows (process.platform === 'darwin' or 'win32').","commonSituations":"A developer on macOS runs the wrong pnpm task; CI matrix lacks a linux leg guard; the universal test script dispatches this runner on every OS.","solutions":["Run only on Linux: use a Linux CI runner, or guard the package.json script with a platform check.","If developing on another OS, run the test inside a Linux container/VM.","Wire the runner behind a `uname`/platform gate in the calling task so it is skipped on non-Linux."],"exampleFix":"// package.json\n\"test:e2e:terminal-ibus-hangul-native\": \"node -e \"process.platform==='linux' && require('child_process').execSync('node config/scripts/run-terminal-ibus-hangul-e2e.mjs',{stdio:'inherit'})\"\"","handlingStrategy":"validation","validationCode":"if (process.platform !== 'linux') {\n  console.error('Skipping native IBus Hangul E2E: requires Linux/X11')\n  process.exit(0) // skip, not fail\n}","typeGuard":"function isLinux(platform: string): platform is 'linux' {\n  return platform === 'linux'\n}","tryCatchPattern":null,"preventionTips":["Guard the package.json script with a platform check so non-Linux runners skip cleanly.","Document the Linux-only requirement in CI matrix leg names.","Use a container/VM for cross-OS development."],"tags":["platform","linux","guard","e2e"],"backgroundTag":null,"analyzedSha":"1136503c6a231a16dce8f921f6fadb63d181e8db","analyzedAt":"2026-08-12T23:15:58.167Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}