{"record":{"id":"fd38750377a5ecb9","repo":"paperclipai/paperclip","slug":"invalid-range-trimmed-in-cron-spec-name-fi","errorCode":null,"errorMessage":"Invalid range \"${trimmed}\" in cron ${spec.name} field","messagePattern":"Invalid range \"(.+?)\" in cron (.+?) field","errorType":"validation","errorClass":"Error","httpStatus":422,"severity":"error","filePath":"server/src/services/cron.ts","lineNumber":135,"sourceCode":"        rangeStart = start;\n      }\n\n      validateBounds(rangeStart, spec);\n      validateBounds(rangeEnd, spec);\n\n      for (let i = rangeStart; i <= rangeEnd; i += step) {\n        values.add(i);\n      }\n      continue;\n    }\n\n    // Check for range syntax: \"N-M\"\n    if (trimmed.includes(\"-\")) {\n      const [aStr, bStr] = trimmed.split(\"-\");\n      const a = parseInt(aStr!, 10);\n      const b = parseInt(bStr!, 10);\n      if (isNaN(a) || isNaN(b)) {\n        throw new Error(\n          `Invalid range \"${trimmed}\" in cron ${spec.name} field`,\n        );\n      }\n      validateBounds(a, spec);\n      validateBounds(b, spec);\n      if (a > b) {\n        throw new Error(\n          `Invalid range ${a}-${b} in cron ${spec.name} field (start > end)`,\n        );\n      }\n      for (let i = a; i <= b; i++) {\n        values.add(i);\n      }\n      continue;\n    }\n\n    // Wildcard\n    if (trimmed === \"*\") {","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/cron.ts#L117-L153","documentation":"Range guard in parseField's plain N-M branch: splitting on '-' yielded endpoints where parseInt produced NaN for at least one side. The quoted token shows the malformed range before any bounds validation runs.","triggerScenarios":"Thrown at server/src/services/cron.ts:135 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the range syntax in the named cron field."],"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"}