{"record":{"id":"c8cb80fcc754f248","repo":"we-promise/sure","slug":"date-range-too-large-max-5-years","errorCode":null,"errorMessage":"Date range too large (max 5 years)","messagePattern":"Date range too large \\(max 5 years\\)","errorType":"validation","errorClass":"Provider::YahooFinance::Error","httpStatus":null,"severity":"error","filePath":"app/models/provider/yahoo_finance.rb","lineNumber":639,"sourceCode":"        .group_by { |s| [ EXCHANGE_CONFIG[s.exchange_operating_mic][:dual_list_group], s.name.to_s.strip.downcase ] }\n        .each_value do |group|\n          next unless group.size > 1\n          preferred = group.min_by { |s| EXCHANGE_CONFIG[s.exchange_operating_mic][:preference_rank] }\n          group.each { |s| dominated << s.object_id unless s.equal?(preferred) }\n        end\n\n      return securities if dominated.empty?\n      securities.reject { |s| dominated.include?(s.object_id) }\n    end\n\n    # ================================\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","sourceCodeStart":621,"sourceCodeEnd":657,"githubUrl":"https://github.com/we-promise/sure/blob/e69894adb92547273377398c15f45c979cd9416a/app/models/provider/yahoo_finance.rb#L621-L657","documentation":"Error \"Date range too large (max 5 years)\" thrown in we-promise/sure.","triggerScenarios":"Thrown at app/models/provider/yahoo_finance.rb:639 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"}