{"record":{"id":"1142182782387c17","repo":"instructure/canvas-lms","slug":"unknown-gradingstandard-data-version-version","errorCode":null,"errorMessage":"Unknown GradingStandard data version: #{version}","messagePattern":"Unknown GradingStandard data version: #(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/models/grading_standard.rb","lineNumber":242,"sourceCode":"      data = super\n      data = GradingStandard.upgrade_data(data, version) unless data.nil?\n      self.data = data\n    end\n    super\n  end\n\n  def self.upgrade_data(data, version)\n    case version.to_i\n    when VERSION\n      data\n    when 1\n      0.upto(data.length - 2) do |i|\n        data[i][1] = data[i + 1][1] + 0.01\n      end\n      data[-1][1] = 0\n      data\n    else\n      raise \"Unknown GradingStandard data version: #{version}\"\n    end\n  end\n\n  def trim_whitespace\n    data.each do |scheme|\n      scheme.first.strip!\n    end\n  end\n  private :trim_whitespace\n\n  def update_usage_count\n    self.usage_count = assignments.active.count\n    self.context_code = context_type && \"#{context_type.underscore}_#{context_id}\"\n  end\n\n  def prevent_deletion_of_used_schemes\n    return unless Account.site_admin.feature_enabled?(:archived_grading_schemes) && assessed_assignment?\n","sourceCodeStart":224,"sourceCodeEnd":260,"githubUrl":"https://github.com/instructure/canvas-lms/blob/1c9f0bb8013ed69c4f2efe11fd483025469b7e6c/app/models/grading_standard.rb#L224-L260","documentation":"GradingStandard.data(version) is a versioned deserializer for grading scheme data. It supports specific known versions (implicitly 1 and 2 in the surrounding code); any other stored version string reaches the else branch and raises, meaning the data shape/version cannot be interpreted safely.","triggerScenarios":"Loading a GradingStandard whose stored data version field contains an unrecognized value — corrupt or hand-edited data, data written by a newer Canvas version, or a migration that left version nil/unexpected.","commonSituations":"Importing grading standards exported from a newer Canvas release into an older one; manual DB edits or course-copy corruption of grading_standards.data; plugins/older code paths writing a version this build doesn't know.","solutions":["Inspect the offending GradingStandard row's data version and correct it to a supported value (1 or 2)","Upgrade Canvas (or the grading standard gem code) to a version that supports the stored data version","Recreate the grading standard with a supported scheme instead of importing the incompatible payload","Sanitize imported course-copy/export payloads to known versions before persisting"],"exampleFix":"// before\nGradingStandard.import(some_newer_export) # data version unknown to this build\n// after\nstandard = GradingStandard.new(grading_scheme: normalized_scheme)\n# normalize the imported scheme to the current data format/version first","handlingStrategy":"validation","validationCode":"version = standard.data_version\nraise \"unsupported grading standard version #{version}\" unless [1, 2].include?(version)","typeGuard":null,"tryCatchPattern":"begin\n  scheme = grading_standard.data\nrescue RuntimeError => e\n  raise unless e.message.start_with?('Unknown GradingStandard data version')\n  scheme = default_scheme\nend","preventionTips":["Only import grading standards from compatible Canvas versions","Validate version field before persisting imported standards","Keep Canvas upgraded so newer data versions are understood"],"tags":["ruby","rails","grading-standard","data-version","deserialization"],"backgroundTag":"unsupported-enum-value","analyzedSha":"1c9f0bb8013ed69c4f2efe11fd483025469b7e6c","analyzedAt":"2026-09-15T20:33:18.891Z","contentChangedAt":"2026-09-15T20:33:18.891Z","schemaVersion":2},"datasetVersion":"2026-09-23T02:17:17.105Z"}