{
  "checker": {
    "details": {
      "argv": [
        "/opt/node22/bin/node",
        "-e",
        "const m=require('/workspace/native/build/Release/haven_audio.node'); console.log(JSON.stringify({isSupported:m.isSupported(),exports:Object.keys(m).sort()}))"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "{\"isSupported\":true,\"exports\":[\"cleanup\",\"getAudioApplications\",\"getWindowProcesses\",\"isSupported\",\"optOutOfDucking\",\"startCapture\",\"stopCapture\"]}",
      "working": true
    },
    "status": "PASS"
  },
  "main_blocker": null,
  "notes": {
    "earlier_failure_cause": "The earlier failed run's 'Product source changed' was caused by npm install rewriting the tracked package-lock.json (CRLF to LF). The lockfile contents are identical, and the file is restored to the pinned bytes. The first isSupported() check returned false only because no PulseAudio server was running in the VM; that is a prerequisite, not a repo defect.",
    "electron_gui": "node_modules/electron binary download failed with 'TypeError: fetch failed' from the Electron release host (install.js). This blocks `npm run dev` in this VM. It is a network/prerequisite issue (GitHub release assets unreachable through the proxy). Not a repo defect; not exercised.",
    "fault_owner": "none - no repo defect found; no source patch produced"
  },
  "operation": "Load the Linux per-application audio native addon (native/build/Release/haven_audio.node) built by `npm run build:native`, call isSupported() and check the exported API (cleanup, getAudioApplications, getWindowProcesses, isSupported, optOutOfDucking, startCapture, stopCapture). Output: {\"isSupported\":true,...}. Replayable as .coldpass/probe.json.",
  "operation_scope": "Covers the native addon load and capability check on Linux with a PulseAudio server running locally. NOT exercised: `npm run dev` / Electron GUI launch (Electron binary download failed, no X DISPLAY in VM), `npm test`, lint/i18n checks, and actual per-app capture of a playing stream (no audio app running). isSupported() depends on a PulseAudio/PipeWire server being reachable; the probe requires it to still be running when the checker runs.",
  "outcome": "working",
  "steps": [
    "Installed Ubuntu 24.04 prerequisites via apt: xz-utils, build-essential, libpulse-dev, libx11-dev, libxtst-dev, libxinerama-dev, libxt-dev, libxrandr-dev, libxfixes-dev, python3 (README: Building from Source > Prerequisites, Linux)",
    "Installed Node.js 22.23.2 (sha256 verified against nodejs.org SHASUMS256) into /opt/node22 (README: Prerequisites, Node.js 22.23.2+)",
    "npm install (README: Quick Start (Terminal)); postinstall electron-builder install-app-deps succeeded (uiohook-napi)",
    "npm run build:native (README: Quick Start (Terminal)); built native/build/Release/haven_audio.node",
    "Verified the earlier stuck step: node -e require(haven_audio.node) now loads and exports the 7 expected functions",
    "Installed pulseaudio + pulseaudio-utils and started a daemon (README: Supported Platforms, Linux PulseAudio); isSupported() then returned true",
    "Restored package-lock.json to the pinned-commit bytes after npm install rewrote it (CRLF to LF, content otherwise identical); verified workspace matches pinned commit b70e9fb65870a437bf3dcc3dcb7f78b6a0f87504 except node_modules and native/build"
  ],
  "stuck_step": null,
  "suggested_fix": null
}
