Home Developers Evidence education.final_grade

Public evidence

education.final_grade

Machine-checked verification for calculation version 1.1.1 · tier engine_tested

CVP: CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance· Current excludes final; W in percent; planning estimate only · Protocol · Schema · Production report

Declared partition coverage
PASS · 5/5 declared partitions (need, overall, weighted, points, invalid-domain)
Versions
Calculation 1.1.1 · CVP protocol 1.0.0-proposed
CVP identity
8/8 property · digest d660dddb19db

Verification

Legacy regression suite: 26/26 calculation tests · Production surface contract 4/4

Three distinct suites: educational examples on the calculator page, this legacy regression count (26/26 golden + boundary), and the CVP verification suite below. They are not the same number. Property, metamorphic, round-trip, O3, and interface statuses/checks are recorded in the CVP Manifest . SKIP (0/0) means that suite has no published vectors.

    This calculator CURRENT · Public schema 1.1.1 matches · Semantic contract ✓ · Production attested · Public/cache ✓ · Origin ✓

CVP verification suite

Protocol checks from the Evidence Manifest. Distinct from the legacy regression suite above. Calculation version 1.1.1. CVP 1.0.0-proposed. 1/1 golden · 12/12 CVP boundary · 4/4 invalid · 8/8 property · 1/1 cross-interface · 1/1 CVP contract. digest d660dddb19db.

  • Golden (oracle-backed) 1 / 1
  • CVP boundary 12 / 12
  • Invalid input 4 / 4
  • Property 8 / 8
  • Cross-interface 1 / 1
  • CVP contract 1 / 1
  • Interfaces PASS · UI (SSR) / REST / MCP
  • Interface claim ui-ssr is query-result HTML, not a live browser session.
  • Assurance Engineering
  • release artifacts aligned PASS
  • schema valid input executes PASS
  • engine success output validates schema PASS
  • schema rejects incomplete input PASS

Fingerprint sha256:d0c84c4dfd54ae467be14367de1c0f3532748857b551ffe47175946d417c9479

Input schema sha256:548a9acb12e46491968636cf4991a6f7ab8a701719afbde49b6e02c3921c9df2 · Output schema sha256:2fa2caf68de0f94e8f23cae378eed36318bc3b0edbb0cdebcadfd2b07cd7e1ba · Build-time SHA-256 digests prove published artifacts agree with each other (release_integrity.scope=workspace). Production attestation GETs canonical URLs twice (public/cached view and origin), including Capability HTML, via npm run attest:production --write (published at /.well-known/calculatorx-production-attestation.json) and fails if the public Capability page advertises a different calculation_version. This is artifact consistency, not an independent immutable release log.

Build & scope

Engine identity and declared limitations.

Tool
final-grade
Engine
final-grade
Engine build
2026-09-10
Evidence core
2026-09-10T22:48:17.762Z
Rendered
2026-09-16T22:03:43.767Z
Last reviewed

Assumptions

  • Category weights are percentages that should total about 100% including remaining work.
  • Need on final / Overall after final: Current must exclude the final. Do not enter a current grade that already counts the final as 0%.
  • Weighted course: enter category grades and weights as they actually appear in the syllabus or LMS for completed work.
  • No curve, drop-lowest, or extra credit unless you adjust inputs yourself.

Limitations

  • Need on final / Overall: Current must exclude the final (pre-final grade). Do not enter an LMS current that already counts the final as 0%.
  • Weighted: enter category grades and weights as they actually appear for completed work; remaining weight is optional.
  • W is percent (40); w = W/100 is the fraction form. Do not mix W and w in one expression.
  • Need on final with W = 0 → status invalid, code WEIGHT_REQUIRED (not a number).
  • Points mode total ≤ 0 → TOTAL_POINTS_REQUIRED. Final points > total still computes and warns POINTS_EXCEED_TOTAL.
  • Letter cutoffs / GPA points are a reference example, not part of the calculation model.
  • Planning estimate only — not an official transcript. No curve, drop-lowest, or extra credit unless you adjust inputs.
  • Engine aliases current/goal/W/finalScore/totalPoints are accepted at runtime; prefer share-URL field names in schemas.

Sources

Standards and references supporting this tool specification. Methods are listed separately — they are algorithms, not bibliographic sources.

Legacy published checks

Golden and boundary cases from the legacy Evidence JSON. CVP property, metamorphic, round-trip, O3, and interface statuses/checks are recorded in the Manifest — including SKIP when a suite has no vectors.

IDKindStatusDetail
need-85-90-40goldenpassExpected value=97.5 · reachability=attainable · Actual value=97.5 · status=ok · mode=need · current=85 · goal=90 · weight=40 · remain=60 · needed=97.5
need-70-80-50goldenpassExpected value=90 · reachability=attainable · Actual value=90 · status=ok · mode=need · current=70 · goal=80 · weight=50 · remain=50 · needed=90
boundary-w-100boundarypassExpected value=88 · reachability=attainable · Actual value=88 · status=ok · mode=need · current=70 · goal=88 · weight=100 · remain=0 · needed=88
boundary-w-0boundarypassExpected WEIGHT_REQUIRED · Actual WEIGHT_REQUIRED
boundary-needed-100boundarypassExpected value=100 · reachability=attainable · Actual value=100 · status=ok · mode=need · current=80 · goal=90 · weight=50 · remain=50 · needed=100
boundary-unreachableboundarypassExpected value=235 · reachability=unreachable · Actual value=235 · status=ok · mode=need · current=60 · goal=95 · weight=20 · remain=80 · needed=235
boundary-needed-0boundarypassExpected value=0 · reachability=secured · Actual value=0 · status=ok · mode=need · current=100 · goal=60 · weight=40 · remain=60 · needed=0
boundary-needed-negboundarypassExpected value=-30 · reachability=secured · Actual value=-30 · status=ok · mode=need · current=95 · goal=70 · weight=20 · remain=80 · needed=-30
overall-85-92-40goldenpassExpected value=87.8 · Actual value=87.8 · status=ok · mode=overall · current=85 · finalScore=92 · weight=40 · remain=60 · overall=87.8
boundary-overall-w-0boundarypassExpected value=85 · Actual value=85 · status=ok · mode=overall · current=85 · finalScore=92 · weight=0 · remain=100 · overall=85
boundary-overall-w-100boundarypassExpected value=92 · Actual value=92 · status=ok · mode=overall · current=85 · finalScore=92 · weight=100 · remain=0 · overall=92
points-200-1000goldenpassExpected value=20 · Actual value=20 · status=ok · mode=points · total=1000 · finalPts=200 · weight=20 · unit=%
boundary-points-total-0boundarypassExpected TOTAL_POINTS_REQUIRED · Actual TOTAL_POINTS_REQUIRED
points-exceed-totalboundarypasswarning POINTS_EXCEED_TOTAL
xref-need-overall-identityformula cross-checkpassExpected value=90 · Actual value=90 · status=ok · mode=overall · current=85 · finalScore=97.5 · weight=40 · remain=60 · overall=90
weighted-two-catsgoldenpassExpected value=85 · Actual value=85 · status=ok · mode=weighted · counted=2 · weightSum=100 · weightedSum=8500 · currentAvg=85 · remain=0
boundary-categories-emptyboundarypassExpected CATEGORIES_REQUIRED · Actual CATEGORIES_REQUIRED
boundary-overall-missing-finalboundarypassExpected INPUT_REQUIRED · Actual INPUT_REQUIRED
property-deterministicpropertypass97.5
property-w100-needed-eq-goalpropertypass88
property-need-overall-roundtrippropertypass90
property-overall-w0propertypass85
property-overall-w100propertypass92
property-points-inversepropertypass20
property-monotonic-currentpropertypassneeded decreases as current increases
property-Ww-identitypropertypass97.5