{
  "head": "177c39e5cfabb45d3ce3d6b74ed2ce6bb0dc47fa",
  "sourceTree": "8ce44e51fbe843124cb868b6dd84cbd7159af1af",
  "base": "8cd9641f76874f2ce17d6c80acd71fab1f0b99d3",
  "ordinaryDiff": {
    "added": 463,
    "deleted": 36,
    "total": 499
  },
  "sources": {
    "apps/server/src/device/SshDeviceHost.test.ts": {
      "gitBlob": "4f7a69b6d41126ba3993d08df8588d9e8a6bd036",
      "sha256": "036d46d03696bbe036192f4995f9ad523f665728c800421dcfbe809e2264d729"
    },
    "apps/server/src/device/SshDeviceHost.ts": {
      "gitBlob": "1e3fb294187dc8b7fae355746fe0242ddab523bd",
      "sha256": "14744ee2f1fd9c2c35835dacc8949ba20ca620db4d44b54a2cdebf9a325e822a"
    },
    "apps/server/src/device/sshDeviceScript.test.ts": {
      "gitBlob": "dbb3fd8a5a944156b879644cd116ab42ce2bb22f",
      "sha256": "e0b7752104a3e5b5c64c78322a5738a6b397b6dce4e0a8b6c794cb9f2f98f8d3"
    },
    "apps/server/src/device/sshDeviceScript.ts": {
      "gitBlob": "2ab93163870f9a26e4de2e55487e64bfd3faf7a0",
      "sha256": "a95f9288ae7211747cc2fa76919c91dd99238cb2764204ad8622bc9164ad2ba9"
    },
    "docs/user/devices.md": {
      "gitBlob": "014d151a84dad9d9b848df54735b76eb773a60fd",
      "sha256": "c59b86bf44c116324db9ccc97fc15fad40593209afeef3166185879fb3e26eb3"
    }
  },
  "command": "vp test run apps/server/src/device/sshDeviceScript.test.ts apps/server/src/device/SshDeviceHost.test.ts apps/server/src/device/DeviceToolchain.test.ts",
  "windows": {
    "passed": 7,
    "failed": 0,
    "skipped": 5,
    "exitCode": 0,
    "outcomes": [
      {
        "file": "apps/server/src/device/DeviceToolchain.test.ts",
        "tests": [
          {
            "name": "failed installation cleans staging and exposes only a safe failure message",
            "status": "passed",
            "durationMs": 20.75520000000006
          },
          {
            "name": "inventory reports only completed versions without installing the required version",
            "status": "passed",
            "durationMs": 31.322499999999764
          },
          {
            "name": "unreadable inventory stays unknown instead of reporting no installs",
            "status": "passed",
            "durationMs": 1.603399999999965
          }
        ]
      },
      {
        "file": "apps/server/src/device/SshDeviceHost.test.ts",
        "tests": [
          {
            "name": "preserves installed status after probes and cleans failed agent activation",
            "status": "passed",
            "durationMs": 498.1362999999992
          }
        ]
      },
      {
        "file": "apps/server/src/device/sshDeviceScript.test.ts",
        "tests": [
          {
            "name": "passes bootstrap code through the remote login shell without reinterpreting quotes",
            "status": "passed",
            "durationMs": 614.9351999999994
          },
          {
            "name": "preserves remote arguments and exact stdin, and reports failure through the login shell",
            "status": "passed",
            "durationMs": 522.1484
          },
          {
            "name": "runs Windows npm probe and installation through Node with paths containing spaces",
            "status": "passed",
            "durationMs": 12538.7375
          },
          {
            "name": "preserves a working SSH Node/npm pair and replaces an old Node: supported=true",
            "status": "skipped"
          },
          {
            "name": "preserves a working SSH Node/npm pair and replaces an old Node: supported=false",
            "status": "skipped"
          },
          {
            "name": "finds Android Studio Java for a non-interactive SSH session",
            "status": "skipped"
          },
          {
            "name": "preserves shell metacharacters and newlines in remote arguments",
            "status": "skipped"
          },
          {
            "name": "remote helper lifecycle reuses its own healthy helpers and stops only its own runtime",
            "status": "skipped"
          }
        ]
      }
    ]
  },
  "macOS": {
    "node": "v24.22.0",
    "passed": 12,
    "failed": 0,
    "skipped": 0,
    "exitCode": 0,
    "outcomes": [
      {
        "file": "apps/server/src/device/DeviceToolchain.test.ts",
        "tests": [
          {
            "name": "failed installation cleans staging and exposes only a safe failure message",
            "status": "passed",
            "durationMs": 9.496208000000024
          },
          {
            "name": "inventory reports only completed versions without installing the required version",
            "status": "passed",
            "durationMs": 7.792790999999966
          },
          {
            "name": "unreadable inventory stays unknown instead of reporting no installs",
            "status": "passed",
            "durationMs": 0.6871659999999338
          }
        ]
      },
      {
        "file": "apps/server/src/device/SshDeviceHost.test.ts",
        "tests": [
          {
            "name": "preserves installed status after probes and cleans failed agent activation",
            "status": "passed",
            "durationMs": 76.780167
          }
        ]
      },
      {
        "file": "apps/server/src/device/sshDeviceScript.test.ts",
        "tests": [
          {
            "name": "passes bootstrap code through the remote login shell without reinterpreting quotes",
            "status": "passed",
            "durationMs": 81.90979099999993
          },
          {
            "name": "preserves remote arguments and exact stdin, and reports failure through the login shell",
            "status": "passed",
            "durationMs": 42.69041699999991
          },
          {
            "name": "runs Windows npm probe and installation through Node with paths containing spaces",
            "status": "passed",
            "durationMs": 6834.367125
          },
          {
            "name": "preserves a working SSH Node/npm pair and replaces an old Node: supported=true",
            "status": "passed",
            "durationMs": 586.9017499999991
          },
          {
            "name": "preserves a working SSH Node/npm pair and replaces an old Node: supported=false",
            "status": "passed",
            "durationMs": 543.1138329999994
          },
          {
            "name": "finds Android Studio Java for a non-interactive SSH session",
            "status": "passed",
            "durationMs": 203.3766250000008
          },
          {
            "name": "preserves shell metacharacters and newlines in remote arguments",
            "status": "passed",
            "durationMs": 15.363375000000815
          },
          {
            "name": "remote helper lifecycle reuses its own healthy helpers and stops only its own runtime",
            "status": "passed",
            "durationMs": 5456.030375
          }
        ]
      }
    ]
  },
  "staticChecks": {
    "targetedLint": "passed",
    "targetedFormatting": "passed",
    "scopedTypeScript": {
      "errors": 0,
      "existingNonFailingSuggestions": 4
    },
    "pinnedBaseWhitespace": "passed"
  },
  "frozenDependencyInstall": {
    "windows": "passed",
    "macOS": "passed"
  },
  "testResourceCleanup": {
    "macOSObservedProcessIdentities": 37,
    "macOSSurvivors": [],
    "macOSTestFixtureDirectories": [],
    "windowsObservedProcessIdentities": 12,
    "windowsSurvivors": []
  },
  "limits": [
    "Tests use real shells and subprocesses with controlled fixtures. Early Node versions are simulated.",
    "No live SSH helper lifecycle on Windows or successful registry installation is established.",
    "No frontend change; integrated web, desktop, and mobile verification does not apply."
  ]
}
