{"record":{"id":"2b1e834b77b24832","repo":"paperclipai/paperclip","slug":"paperclip-k8s-backend-must-be-job-or-sandbox-cr","errorCode":null,"errorMessage":"PAPERCLIP_K8S_BACKEND must be \"job\" or \"sandbox-cr\" (got \"${backend}\").","messagePattern":"PAPERCLIP_K8S_BACKEND must be \"job\" or \"sandbox-cr\" \\(got \"(.+?)\"\\)\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/execution-policy-bootstrap.ts","lineNumber":90,"sourceCode":"): ExecutionPolicyBootstrap | null {\n  const raw = env.PAPERCLIP_EXECUTION_MODE?.trim();\n  if (!raw || raw === \"any\") return null;\n  if (raw !== \"kubernetes\") {\n    throw new Error(\n      `PAPERCLIP_EXECUTION_MODE must be \"kubernetes\" or \"any\" (got \"${raw}\").`,\n    );\n  }\n\n  const kubernetesConfig: KubernetesEnvironmentConfigInput = {\n    // inCluster defaults to false (matches the plugin schema default); an\n    // in-cluster cloud deployment sets PAPERCLIP_K8S_IN_CLUSTER=true.\n    inCluster: parseBool(env.PAPERCLIP_K8S_IN_CLUSTER) ?? false,\n  };\n\n  const backend = env.PAPERCLIP_K8S_BACKEND?.trim();\n  if (backend) {\n    if (backend !== \"job\" && backend !== \"sandbox-cr\") {\n      throw new Error(\n        `PAPERCLIP_K8S_BACKEND must be \"job\" or \"sandbox-cr\" (got \"${backend}\").`,\n      );\n    }\n    kubernetesConfig.backend = backend;\n  }\n\n  const egressMode = env.PAPERCLIP_K8S_EGRESS_MODE?.trim();\n  if (egressMode) {\n    if (egressMode !== \"cilium\" && egressMode !== \"standard\") {\n      throw new Error(\n        `PAPERCLIP_K8S_EGRESS_MODE must be \"cilium\" or \"standard\" (got \"${egressMode}\").`,\n      );\n    }\n    kubernetesConfig.egressMode = egressMode;\n  }\n\n  const runtimeClassName = env.PAPERCLIP_K8S_RUNTIME_CLASS_NAME?.trim();\n  if (runtimeClassName) kubernetesConfig.runtimeClassName = runtimeClassName;","sourceCodeStart":72,"sourceCodeEnd":108,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/execution-policy-bootstrap.ts#L72-L108","documentation":"Backend guard in parseExecutionPolicyBootstrapEnv: PAPERCLIP_K8S_BACKEND is set but is neither 'job' nor 'sandbox-cr'. Rejected at bootstrap so an unknown Kubernetes execution backend never reaches environment provisioning.","triggerScenarios":"Thrown at server/src/services/execution-policy-bootstrap.ts:90 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set PAPERCLIP_K8S_BACKEND to \"job\" or \"sandbox-cr\"."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}