{
  "capability_id": "education.gpa_letter",
  "tool_id": "gpa-to-letter",
  "engine": "gpa-letter",
  "calculation_version": "1.1.3",
  "generated_at": "2026-11-10T05:18:42.044Z",
  "engine_build": "2026-09-21",
  "test_count": 16,
  "passed": 16,
  "failed": 0,
  "tests_summary": {
    "golden": {
      "passed": 16,
      "total": 16
    },
    "boundary": {
      "passed": 0,
      "total": 0
    },
    "property": {
      "passed": 0,
      "total": 0
    }
  },
  "engine_tested": true,
  "expert_reviewed": false,
  "internally_reviewed": false,
  "review_kind": null,
  "source_checked": true,
  "reviewed_by": null,
  "reviewer_role": null,
  "last_reviewed": null,
  "expert_review": {
    "status": "optional_not_performed",
    "reviewer": null,
    "scope": [
      "formula",
      "input semantics",
      "assumptions",
      "limitations",
      "sources",
      "tests"
    ],
    "note": "Domain expert review is optional under CVP (CVP-EXP-01). Absence does not block CVP Verified. See Review policy for supplemental domain assurance."
  },
  "internal_review": {
    "status": "not_applicable",
    "reviewer": null
  },
  "page": "https://www.calculatorx.com/calc/grade/gpa-to-letter",
  "api": "https://www.calculatorx.com/api/v1/calc/gpa-to-letter",
  "schema_input": "https://www.calculatorx.com/schemas/education.gpa_letter.input.json",
  "schema_output": "https://www.calculatorx.com/schemas/education.gpa_letter.output.json",
  "assumptions": [
    "Default plus/minus map uses A+=4.33 … F=0.",
    "Percentage ranges are one common U.S. syllabus convention for the matched letter, not a function of the input GPA.",
    "Linear 5.0 assumes a 5.0 numeric ceiling linearly mapped to 4.0. It is not a generic weighted→unweighted GPA conversion.",
    "Nearest matching is an approximation algorithm, not a registrar rule for converting cumulative GPA back into a letter."
  ],
  "limitations": [
    "Interpretation of a numeric GPA or a single letter — not a registrar conversion",
    "Not a term or cumulative GPA from a course list (use the GPA calculator)",
    "Example percentage bands are syllabus conventions, not derived from GPA"
  ],
  "boundary_conditions": [
    "Plus/minus 4.33 requires 0 ≤ GPA ≤ 4.33; values outside that range are a validation error (not clamped).",
    "Flat 4.0 requires 0 ≤ GPA ≤ 4.00.",
    "Linear 5.0 requires 0 ≤ GPA ≤ 5.00, then scales by 4/5 before letter match.",
    "Nearest ties (equal distance to two grade points) prefer the higher letter, including 3.50 → A-, 3.835 → A, and 4.165 → A+ on plus/minus 4.33."
  ],
  "sources": [
    {
      "title": "University of Alabama — Grades and Grade Points",
      "section": "A+ = 4.33; A = 4.00; A− = 3.67; B+ = 3.33; … F = 0.00",
      "url": "https://catalog.ua.edu/undergraduate/about/academic-regulations/records/grades-grade-points-gpa/",
      "supports": "Published plus/minus 4.33 grade-point map used as this calculator’s default reference model",
      "kind": "reference",
      "accessed": "2026-08-18"
    },
    {
      "title": "Arizona State University Registrar — Grades and grading policies",
      "section": "A+ = 4.33 on the grading scale, but cumulative GPA is capped at 4.00",
      "url": "https://registrar.asu.edu/grades",
      "supports": "Same 4.33 letter points can still differ in how cumulative GPA is reported",
      "kind": "reference",
      "accessed": "2026-08-18"
    },
    {
      "title": "Simon Fraser University SIAT — Recommended grading scale",
      "section": "A− = 85–89.5% with A− = 3.67 grade points (not 90–92%)",
      "url": "https://www.sfu.ca/siat/programs/undergraduate/current-students/student-resources/grading-scale.html",
      "supports": "Percentage bands are school-specific even when grade points match 4.33 / 4.00 / 3.67",
      "kind": "reference",
      "accessed": "2026-08-18"
    },
    {
      "title": "University of California Admissions — GPA requirement",
      "section": "A/B/C/D map to 4/3/2/1, then extra honors/AP/IB points are added with a honors-point cap",
      "url": "https://admission.universityofcalifornia.edu/admission-requirements/first-year-requirements/gpa-requirement.html",
      "supports": "Why Linear 5.0 must not be described as a generic weighted→unweighted GPA conversion",
      "kind": "reference",
      "accessed": "2026-08-18"
    },
    {
      "title": "Randolph College Physics — Grade Scale",
      "section": "A+ = 97–100; A = 93–96; A− = 90–92; B+ = 87–89; … D− = 60–62; F = 0–59",
      "url": "https://physics.randolphcollege.edu/psheldon/classes/gradescale.html",
      "supports": "The example percentage-band table shown by this calculator (a published syllabus convention, not universal)",
      "kind": "reference",
      "accessed": "2026-08-18"
    },
    {
      "title": "St. Olaf College — Typical Grading Scale (Jill Dietz)",
      "section": "97–100% A/A+; 93–96% A; 90–92% A−; 87–89% B+; … 60–62% D−; <60% F",
      "url": "https://pages.stolaf.edu/dietz/typical-grading-scale/",
      "supports": "Independent published example of the same 97–100 / 93–96 / 90–92 syllabus convention",
      "kind": "reference",
      "accessed": "2026-08-18"
    }
  ],
  "methods": [],
  "fingerprint": "sha256:000b22bd9b33392e932ecdbf31f9d8cde99d2049b58579e7bb5be50c5d3225ec",
  "tier": "engine_tested",
  "verification": {
    "tests": {
      "passed": 16,
      "total": 16,
      "golden": 16,
      "boundary": 0,
      "property": 0
    },
    "contract_checks": {
      "passed": 6,
      "total": 6
    }
  },
  "evidence_core_generated_at": "2026-09-21T15:56:45.653Z",
  "rendered_at": "2026-11-10T05:18:42.044Z",
  "release_integrity": {
    "status": "verified",
    "scope": "workspace",
    "production_attestation_required": true,
    "calculation_version": "1.1.3",
    "artifacts": {
      "engine": "1.1.3",
      "page": "1.1.3",
      "capability": "1.1.3",
      "evidence": "1.1.3",
      "input_schema": "1.1.3",
      "output_schema": "1.1.3",
      "mcp_contract": "1.1.3"
    },
    "digests": {
      "input_schema_sha256": "34264687c89f08e41986002cf356b752837057ce0446b8f0b7ea304add7f35e1",
      "output_schema_sha256": "c02b8c720af9be5cd7928b3e3b7c604acc217b0e65d935eef6fef983aa970c99",
      "evidence_sha256": "fb2ae8019b681fad6876c1c749b05dbac9f18c23d5fa3661773ab226080963cd",
      "evidence_core_sha256": "fb2ae8019b681fad6876c1c749b05dbac9f18c23d5fa3661773ab226080963cd",
      "capability_sha256": "af4a1bd69e9f899624cc5697a15ec43d6bd18358a77a95ac0d1f914f30c6c4a2",
      "engine_sha256": "c6ebd8436f08b413e1ac6317b2d48550f2e6639a90dff254244e3aa562158b8d",
      "mcp_contract_sha256": "eb3e39ad4a95ed263415b4932f185d5edfe00a2403267b7c5ed5f718d1ff6da3"
    },
    "contract_checks": {
      "total": 6,
      "passed": 6,
      "failed": 0,
      "items": [
        {
          "id": "release-artifacts-aligned",
          "status": "pass",
          "detail": "1.1.3"
        },
        {
          "id": "schema-output-required-declared",
          "status": "pass"
        },
        {
          "id": "schema-valid-input-executes",
          "status": "pass"
        },
        {
          "id": "engine-success-output-validates-schema",
          "status": "pass"
        },
        {
          "id": "schema-rejects-incomplete-input",
          "status": "pass"
        },
        {
          "id": "rest-success-payload-validates-schema",
          "status": "pass"
        }
      ]
    },
    "report": "https://www.calculatorx.com/.well-known/calculatorx-release-integrity.json"
  },
  "tests": [],
  "disclosure": {
    "policy": "calculatorx-public-evidence-v1",
    "full_validation": "private",
    "representation": "summary"
  }
}
