freezmo/lib
Martin Dvorak 6fb11fa405 Grade against the question: stop requiring details the question never asked for
A short-answer case: "Why was Kryštof Harant executed?" with the student
answering "because he took part in the anti-Habsburg uprising" was failed
for not naming the year 1621 — a detail only present in the reference
answer, never asked by the question. The generator had put the date into
keyPoints, and the grader treated every key point as mandatory.

- Grading prompt: the QUESTION defines what is required. A key point
  counts only when the question asks for it or the answer is wrong or
  incomplete without it; extra detail in the reference answer (dates,
  places, names, numbers) is a bonus — never listed as missing, never a
  reason to fail. An accepted answer must return an empty "missing"
  array.
- Generation spec: short_answer keyPoints must contain only the ideas
  the question asks for (a "why" question requires the reason, not the
  year).
- gradeShortAnswer drops any stray "missing" entries when correct is
  true, so the UI can never show a gap on an accepted answer.

Verified: mock-Ollama integration test 9/9 through the real /api/grade
route (new rules sent upstream, incorrect answers keep their missing
point, accepted answers normalise to missing: []), regression 74/74,
mobile 51/51, i18n 27/27. Lint + build clean. SW freezmo-v18.
2026-10-09 18:13:29 +00:00
..
ai.ts Grade against the question: stop requiring details the question never asked for 2026-10-09 18:13:29 +00:00
client-api.ts Add “Make my homework”, and finish the mobile polish pass 2026-10-08 18:30:33 +00:00
clipboard.ts Add “Make my homework”, and finish the mobile polish pass 2026-10-08 18:30:33 +00:00
confetti.ts Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
config.ts Add “Make my homework”, and finish the mobile polish pass 2026-10-08 18:30:33 +00:00
deck-ops.ts Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
documents.ts Add an English/Czech interface language switch 2026-10-08 13:56:32 +00:00
folders.ts Add an English/Czech interface language switch 2026-10-08 13:56:32 +00:00
homework.ts Add “Make my homework”, and finish the mobile polish pass 2026-10-08 18:30:33 +00:00
http-guard.ts Add an English/Czech interface language switch 2026-10-08 13:56:32 +00:00
i18n-dict.ts Keep the library header steady across tabs; simplify the empty states 2026-10-08 21:50:18 +00:00
i18n.ts Add an English/Czech interface language switch 2026-10-08 13:56:32 +00:00
image.ts Add an English/Czech interface language switch 2026-10-08 13:56:32 +00:00
install.ts Add the Install the app bottom sheet for mobile browsers 2026-10-07 08:27:43 +00:00
language.ts Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
nav.ts Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
ollama.ts Add an English/Czech interface language switch 2026-10-08 13:56:32 +00:00
prompts.ts Grade against the question: stop requiring details the question never asked for 2026-10-09 18:13:29 +00:00
rate-limit.ts Add an English/Czech interface language switch 2026-10-08 13:56:32 +00:00
schemas.ts Add “Make my homework”, and finish the mobile polish pass 2026-10-08 18:30:33 +00:00
settings.ts Add full-screen API-key gate 2026-10-06 21:20:22 +00:00
storage.ts Add an English/Czech interface language switch 2026-10-08 13:56:32 +00:00
ui-events.ts Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
use-health.ts Mobile UI pass: sheet swipe, ice-scene layering, contrast, touch targets 2026-10-08 17:37:51 +00:00
use-notes-intake.ts Add “Make my homework”, and finish the mobile polish pass 2026-10-08 18:30:33 +00:00
utils.ts Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00
xp.ts Freezmo: self-hosted notes-to-activities study app 2026-10-06 20:56:55 +00:00