Expose practices to learner roles based on practice shell publish state and include per-practice access fields derived from linked question set readiness so clients can manage completion/access UX explicitly.
Co-authored-by: Cursor <cursoragent@cursor.com>
Require question_sets.status to be PUBLISHED for learner-visible practices and reject completion for non-published practice sets so learner progress reflects only publish-ready content.
Co-authored-by: Cursor <cursoragent@cursor.com>