Resolve practice hierarchy using module, lesson, or course linkage and only run module-level cascade when module context exists.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update lesson and practice completion flows to cascade module/course/program progress only when both lesson completion and related published practice completion criteria are met, and align progress counters with the new rule.
Made-with: Cursor