Skip to content

0.27.0 - manifest evaluation block

Choose a tag to compare

@astrapi69 astrapi69 released this 23 Sep 09:57
· 62 commits to main since this release

[0.27.0] - 2026-09-23

Manifest: an optional evaluation block on a set entry (engine#171)

A consumer decides how it scores a lesson run, and the reference app's
default (percent correct plus stars at fixed marks) is wrong for exam-like
content, where the pass mark is part of the subject: a driving-theory test
passes at a stated percentage, a certification set has a grade table. A set
entry may now declare evaluation with scheme (percent, pass_fail,
grades), pass_percent, basis (elements, one value today), a
grades table, report (compact, detailed) and a title. The block
describes ONE lesson run and never aggregates across the set's lessons; the
engine validates the declaration, while sampling, scoring and rendering
stay consumer-side. Beyond the shape, four rules: E-EVAL-GRADES-MISSING,
E-EVAL-PASS-MISSING, E-EVAL-GRADES-DUP (two rows at one threshold would
earn two grades, and which one wins would depend on the row order) and the
one warning, W-EVAL-GRADES-NO-FLOOR (a table whose lowest row starts
above 0 leaves the runs below it to a consumer-invented fallback label;
a warning because "no grade down here" can be the intent). asContentSetEntry carries the block into the
canonical entry, so a consumer reads it through the engine API.

Set level only in this version; the lesson schema stays strict, so an
evaluation inside a lesson file is rejected as before, and the name is
reserved for a planned per-lesson override. Absent block, unchanged
behaviour. Both manifest counters moved, because the block is a new
set-entry key: schema_version's default 1.6 to 1.7 and
x-schema-version 1.14 to 1.15 (the lesson schema follows in lockstep,
as it always has). See docs/lesson-format.md#evaluation.

W-PROMPT-DUP: a prompt that repeats the sentence or the step title (engine#169)

A new author lint. An exercise prompt that equals its sentence (the
cloze sentence, or the question stem in multiselect mode) or the step
title is reported once per matching field, as a warning that never
blocks. Consumers render the prompt as the heading and the sentence as the
question box (the title in the step list), so the learner reads the same
question twice; on a real device this showed up on 10 of 276 exercises in
one content repo, all cloze, spread over six lessons - a pattern that
arises while authoring, not a one-off. Compared after trimming and Unicode
NFC normalisation (a decomposed umlaut equals its precomposed form); case
is kept. No schema change, schema/quality-rules.json untouched.