feat: phase 4 of AI pipeline hardening — quiz & content quality #6

Merged
rve merged 1 commits from feat/ai-pipeline-hardening-phase-4 into main 2026-05-20 17:23:33 +00:00
Owner
  • src/lib/random.js: Fisher–Yates shuffle/sample/pickInt; replace every
    biased .sort(() => 0.5 - Math.random()) site in testService.
  • testService: debias correctIndex via prompt + runtime re-roll (up to 2x
    when one position holds >50%); quality gate rejecting <4 distinct
    options, banned filler ("all of the above" etc) and explanations
    shorter than 20 chars; dedup new questions against the existing bank
    via normalised question text.
  • Quiz schema/tool/prompt require difficulty ('easy'|'medium'|'hard');
    db.getQuizBank defaults legacy records to 'medium' on read.
  • learningService.generateCustomTopic: kebab-case slug ID from the
    polished label with collision suffixes; default learning_relevance
    'standard' when the model omits it.
  • Tests for random helpers, dedup/quality-gate behaviour and the
    extended quiz schema.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

- src/lib/random.js: Fisher–Yates shuffle/sample/pickInt; replace every biased .sort(() => 0.5 - Math.random()) site in testService. - testService: debias correctIndex via prompt + runtime re-roll (up to 2x when one position holds >50%); quality gate rejecting <4 distinct options, banned filler ("all of the above" etc) and explanations shorter than 20 chars; dedup new questions against the existing bank via normalised question text. - Quiz schema/tool/prompt require difficulty ('easy'|'medium'|'hard'); db.getQuizBank defaults legacy records to 'medium' on read. - learningService.generateCustomTopic: kebab-case slug ID from the polished label with collision suffixes; default learning_relevance 'standard' when the model omits it. - Tests for random helpers, dedup/quality-gate behaviour and the extended quiz schema. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
rve added 1 commit 2026-05-20 17:23:29 +00:00
feat: phase 4 of AI pipeline hardening — quiz & content quality
All checks were successful
On Pull Request to Main / test (pull_request) Successful in 31s
On Pull Request to Main / publish (pull_request) Successful in 1m1s
On Pull Request to Main / deploy-dev (pull_request) Successful in 1m31s
66e0c275da
- src/lib/random.js: Fisher–Yates shuffle/sample/pickInt; replace every
  biased .sort(() => 0.5 - Math.random()) site in testService.
- testService: debias correctIndex via prompt + runtime re-roll (up to 2x
  when one position holds >50%); quality gate rejecting <4 distinct
  options, banned filler ("all of the above" etc) and explanations
  shorter than 20 chars; dedup new questions against the existing bank
  via normalised question text.
- Quiz schema/tool/prompt require difficulty ('easy'|'medium'|'hard');
  db.getQuizBank defaults legacy records to 'medium' on read.
- learningService.generateCustomTopic: kebab-case slug ID from the
  polished label with collision suffixes; default learning_relevance
  'standard' when the model omits it.
- Tests for random helpers, dedup/quality-gate behaviour and the
  extended quiz schema.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
rve merged commit 70db8b5c2d into main 2026-05-20 17:23:33 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rve/learning-platform#6