{"record":{"id":"6516e8f788b7d844","repo":"paperclipai/paperclip","slug":"runner-remote-provider-artifact-incompatible-6516e8","errorCode":"runner_remote_provider_artifact_incompatible","errorMessage":"runner_remote_provider_artifact_incompatible: ${label} path must be ${expectedPath}","messagePattern":"runner_remote_provider_artifact_incompatible: (.+?) path must be (.+?)","errorType":"error_code","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/src/services/native-runtime/native-session-executor.ts","lineNumber":8980,"sourceCode":"    ],\n    [\n      \"OpenCode proxy\",\n      payload.artifacts?.opencodeProxy,\n      REMOTE_PROVIDER_PACK_ARTIFACT_PATHS.opencodeProxy,\n    ],\n    [\n      \"ACPX sidecar\",\n      payload.artifacts?.acpxSidecar,\n      REMOTE_PROVIDER_PACK_ARTIFACT_PATHS.acpxSidecar,\n    ],\n  ] as const;\n  for (const [label, artifact, expectedPath] of artifactEntries) {\n    const artifactPath = providerPackRelativePath(\n      artifact?.path,\n      `${label} path`,\n    );\n    if (artifactPath !== expectedPath) {\n      throw new Error(\n        `runner_remote_provider_artifact_incompatible: ${label} path must be ${expectedPath}`,\n      );\n    }\n    if (\n      typeof artifact?.sha256 !== \"string\" ||\n      sha256File(resolve(packRoot, artifactPath)) !== artifact.sha256\n    ) {\n      throw new Error(\n        `runner_remote_provider_artifact_incompatible: ${label} digest mismatch`,\n      );\n    }\n  }\n  if (sha256DirectoryTree(resolve(packRoot, \"dist\")) !== payload.distDigest) {\n    throw new Error(\n      \"runner_remote_provider_artifact_incompatible: provider dist tree digest mismatch\",\n    );\n  }\n  const bridgeDigest = `sha256:${createHash(\"sha256\")","sourceCodeStart":8962,"sourceCodeEnd":8998,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/server/src/services/native-runtime/native-session-executor.ts#L8962-L8998","documentation":"Artifact verification guard over the remote provider pack: each artifact entry (provider Node command, production lockfile, OpenCode command/executable, etc.) must exist at the exact expected path in REMOTE_PROVIDER_PACK_ARTIFACT_PATHS; any deviation throws 'runner_remote_provider_artifact_incompatible: <label> path must be <expectedPath>'. This prevents launching from relocated or tampered pack artifacts.","triggerScenarios":"Thrown at server/src/services/native-runtime/native-session-executor.ts:4098 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Install the provider pack so each artifact sits at its expected canonical path.","Fix the payload's artifacts paths to match REMOTE_PROVIDER_PACK_ARTIFACT_PATHS.","Re-download/repackage the provider pack if artifacts were moved or partially extracted."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-09-02T18:44:00.616Z","contentChangedAt":"2026-09-02T18:44:00.616Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}