{"record":{"id":"0e7f25406e655d82","repo":"paperclipai/paperclip","slug":"invalid-range-a-b-in-cron-spec-name-field","errorCode":null,"errorMessage":"Invalid range ${a}-${b} in cron ${spec.name} field (start > end)","messagePattern":"Invalid range (.+?)-(.+?) in cron (.+?) field \\(start > end\\)","errorType":"validation","errorClass":"Error","httpStatus":422,"severity":"error","filePath":"server/src/services/cron.ts","lineNumber":142,"sourceCode":"        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 === \"*\") {\n      for (let i = spec.min; i <= spec.max; i++) {\n        values.add(i);\n      }\n      continue;\n    }\n\n    // Single value","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/cron.ts#L124-L160","documentation":"Ordering guard in parseField's N-M branch: both endpoints are valid in-bounds integers but the start exceeds the end (e.g. \"5-1\"), which is not a legal cron range. Values are reported numerically after parsing.","triggerScenarios":"Thrown at server/src/services/cron.ts:142 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Swap the range bounds so the start is less than or equal to the end 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-14T05:17:10.506Z"}