Skip to content

v0.41.0

Choose a tag to compare

@astrapi69 astrapi69 released this 12 Oct 16:43
· 8 commits to main since this release
ec8e53a

One new function, no schema change, no change to validation: gradeFor
maps the percent a consumer computed for a lesson run to the verdict of its
set's evaluation block. Nothing turns red on a re-pin; the release only
matters to a consumer that applies the block (adaptive-learner#3736).

gradeFor: a lesson run's percent under its set's evaluation block (engine#227)

A set can declare how one lesson run is evaluated since schema 1.15
(engine#171): a pass mark (pass_fail), a grade table (grades) or a plain
percentage. The engine validated the declaration, but mapping a score to the
verdict was left to each consumer, with boundary rules only written down in
the docs. gradeFor(evaluation, percent) now does the mapping, on the
package root and on learn-content-engine/rules (no ajv, no node:*):

  • pass_percent is inclusive; passed is present whenever the block has a
    pass mark (advisory under percent).
  • Under grades, the row with the highest min_percent the run reaches, in
    any row order. A run between two reachable points of a national scale
    (86.25 % on a 60-point scale) earns the upper grade, as the grading
    presets intend; below the lowest row there is no grade
    (W-EVAL-GRADES-NO-FLOOR).
  • The percent is the consumer's, unrounded, in 0 to 100; anything else
    throws a RangeError.

New type: EvaluationOutcome. No schema change. The first consumer is the
reference app's lesson summary (adaptive-learner#3736).