openedx / openedx/openedx-platform
Bug: Subsection prerequisite with min_score 0 is shown as gated by Studio but not enforced by the LMS
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.2k
- Forks
- 4.4k
- Avg merge
- 6d 18h
- Merged PRs (30d)
- 42
Description
With enable_subsection_gating on, a subsection required as a prerequisite at
minimum score 0, minimum completion 100 is reported as gated by Studio
(xblock/outline gives visibility_state: "gated" and
prereq_min_completion: 100), but the LMS does not gate it. A freshly enrolled
learner's GET /api/courseware/sequence/<gated> returns
gated_content.gated: false immediately.
| min_score | min_completion | Studio visibility_state |
LMS gated |
|---|---|---|---|
| 0 | 100 | gated | false |
| 1 | 100 | gated | true |
| 50 | 0 | gated | true |
The gating milestone appears to be created only when min_score >= 1. A
completion-only requirement produces no gate at all, and the author's completion
threshold is silently ignored.
Expected: create the gating milestone whenever a completion requirement is
set, or have Studio refuse or warn on a completion-only prerequisite it cannot
enforce.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the xblock/outline visibility_state and the LMS GET /api/courseware/sequence/ response for subsection prerequisites. Compare the min_score 0, min_completion 100 case with the working cases in the issue, then add regression coverage for completion-only gating. Done means the LMS enforces the completion threshold consistently with Studio, or the unsupported configuration is refused or warned about.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100