{"record":{"id":"20ffa799567dc359","repo":"we-promise/sure","slug":"start-date-validated-start-date-cannot-be-aft","errorCode":null,"errorMessage":"Start date (#{validated_start_date}) cannot be after end date (#{validated_end_date})","messagePattern":"Start date \\(#(.+?)\\) cannot be after end date \\(#(.+?)\\)","errorType":"validation","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"app/models/provider/yahoo_finance.rb","lineNumber":650,"sourceCode":"    # ================================\n    #           Validation\n    # ================================\n\n\n    def validate_date_range!(start_date, end_date)\n      raise Error, \"Start date cannot be after end date\" if start_date > end_date\n      raise Error, \"Date range too large (max 5 years)\" if end_date > start_date + 5.years\n    end\n\n    def validate_date_params!(start_date, end_date)\n      # Validate presence and coerce to dates\n      validated_start_date = validate_and_coerce_date!(start_date, \"start_date\")\n      validated_end_date = validate_and_coerce_date!(end_date, \"end_date\")\n\n      # Ensure start_date <= end_date\n      if validated_start_date > validated_end_date\n        error_msg = \"Start date (#{validated_start_date}) cannot be after end date (#{validated_end_date})\"\n        raise ArgumentError, error_msg\n      end\n\n      # Ensure end_date is not in the future\n      today = Date.current\n      if validated_end_date > today\n        error_msg = \"End date (#{validated_end_date}) cannot be in the future\"\n        raise ArgumentError, error_msg\n      end\n\n      # Optional: Enforce max lookback window (configurable via constant)\n      max_lookback = MAX_LOOKBACK_WINDOW.ago.to_date\n      if validated_start_date < max_lookback\n        error_msg = \"Start date (#{validated_start_date}) exceeds maximum lookback window (#{max_lookback})\"\n        raise ArgumentError, error_msg\n      end\n    end\n\n    def validate_and_coerce_date!(date_param, param_name)","sourceCodeStart":632,"sourceCodeEnd":668,"githubUrl":"https://github.com/we-promise/sure/blob/e69894adb92547273377398c15f45c979cd9416a/app/models/provider/yahoo_finance.rb#L632-L668","documentation":"Error \"Start date (#{validated_start_date}) cannot be after end date (#{validated_end_date})\" thrown in we-promise/sure.","triggerScenarios":"Thrown at app/models/provider/yahoo_finance.rb:650 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e69894adb92547273377398c15f45c979cd9416a","analyzedAt":"2026-08-21T18:22:41.165Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}