{"record":{"id":"821df27ae33aeecc","repo":"paperclipai/paperclip","slug":"paperclip-k8s-rpc-timeout-ms-must-be-a-positive-in","errorCode":null,"errorMessage":"PAPERCLIP_K8S_RPC_TIMEOUT_MS must be a positive integer of milliseconds (got \"${value}\").","messagePattern":"PAPERCLIP_K8S_RPC_TIMEOUT_MS must be a positive integer of milliseconds \\(got \"(.+?)\"\\)\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/execution-policy-bootstrap.ts","lineNumber":48,"sourceCode":"  executionMode: Extract<InstanceExecutionMode, \"kubernetes\">;\n  kubernetesConfig: KubernetesEnvironmentConfigInput;\n}\n\nfunction parseBool(value: string | undefined): boolean | undefined {\n  if (value === undefined) return undefined;\n  const v = value.trim().toLowerCase();\n  if (v === \"true\" || v === \"1\" || v === \"yes\") return true;\n  if (v === \"false\" || v === \"0\" || v === \"no\") return false;\n  return undefined;\n}\n\nfunction parsePositiveIntMs(value: string | undefined): number | undefined {\n  if (value === undefined) return undefined;\n  const trimmed = value.trim();\n  if (trimmed.length === 0) return undefined;\n  const parsed = Number(trimmed);\n  if (!Number.isFinite(parsed) || !Number.isInteger(parsed) || parsed <= 0) {\n    throw new Error(\n      `PAPERCLIP_K8S_RPC_TIMEOUT_MS must be a positive integer of milliseconds (got \"${value}\").`,\n    );\n  }\n  return parsed;\n}\n\nfunction parseList(value: string | undefined): string[] | undefined {\n  if (value === undefined) return undefined;\n  const items = value\n    .split(\",\")\n    .map((s) => s.trim())\n    .filter((s) => s.length > 0);\n  return items.length > 0 ? items : undefined;\n}\n\n/**\n * Parse the forced-execution-mode env config. Returns null when execution is\n * unrestricted (no env, or `PAPERCLIP_EXECUTION_MODE=any`). Throws on an","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/execution-policy-bootstrap.ts#L30-L66","documentation":"parsePositiveIntMs guard for PAPERCLIP_K8S_RPC_TIMEOUT_MS: the value is set but not a positive integer of milliseconds (non-numeric, zero, negative, or fractional). Startup fails so a bad timeout never silently degrades Kubernetes RPC behavior.","triggerScenarios":"Thrown at server/src/services/execution-policy-bootstrap.ts:48 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set PAPERCLIP_K8S_RPC_TIMEOUT_MS to a positive integer number of milliseconds."],"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"}