A brutally hard question about amortized complexity can and should score as Clear. The point is to hold the computer science demand fixed while bringing the language demand down. Making a question easier costs rigor; fixing its language is free.
The five dimensions
Each is scored out of 100 and contributes a weighted deduction to the composite:
| Dimension | Weight | What it looks at |
|---|---|---|
sentence | 25 | Sentence length and clause structure — how much has to be held in mind at once |
vocabulary | 25 | Word rarity, with glossary terms exempt entirely |
focus | 20 | Whether the question asks one thing or several |
figurative | 15 | Idiom, metaphor and cultural reference — the parts that don't translate |
presentation | 15 | Rendered line count and visual structure on the student display |
Bands
| Band | Composite |
|---|---|
| Clear | 85–100 |
| Mostly clear | 70–84 |
| Needs work | 50–69 |
| High load | 0–49 |
Any hard flag caps the composite at 69 regardless of the arithmetic, so a long clean question cannot hide one killer sentence inside a good average.
The glossary is the whole trick
Words in your glossary are exempt from the vocabulary penalty completely. Without that, a stock
readability formula flags polymorphism, amortized and
idempotent as unreadable — which is useless, because those terms are the
assessment. Glossary hits are counted and reported separately as assumed vocabulary,
so you can see what a question takes for granted.
Manage the list under Glossary. Terms can be marked student-visible, and the glossary travels with an exported question bank so a recipient inherits your course vocabulary along with the questions it exempts.
The live scorecard
The question editor shows a deduction bar, the five dimension rows ranked by how much they cost, and an actionable flag list — rescoring as you type. The panel never edits your text; it only reports on it.
Rows are ranked by deduction, not by score. Vocabulary at 78 looks fine next to Presentation at 84, but on a 25-point weight it costs three times as much. Every band carries an icon and a word as well as a colour, since colour-only encoding is precisely the accessibility failure this feature exists to catch.
Scores carry their scorer version
Scores are cached on the question rather than recomputed on every list render, and tagged with
the cl_version that produced them. A row whose version differs from the running
scorer is stale, not wrong — it renders as a neutral “needs rescoring”
badge rather than a number.
With wordfreq installed the scorer runs at full tier; without
it, base. A base-tier score is not comparable to a full-tier one, which is
exactly what the version tag prevents. After a glossary change or a version bump, run a rescore
so the bank is internally consistent again.
Dismissing a flag
A flag you have considered and rejected can be dismissed with a reason, and stays dismissed. This matters because the alternative — flags you have learned to ignore — makes the whole panel noise after a few weeks.
Where it fits
Comprehension Load is one of three separate measurements kept deliberately unblended; see Difficulty & Calibration for the other two and for what their disagreements tell you.