[Follow-up BE] Remove the ENABLE_COMPETENCY_MASTERY_TRACKING setting
Los mantenedores suelen responder en 1 día
@alezconsultant ya está trabajando en esto.
Desde el 3/11/2026.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
Línea de trabajo
Start with lms/envs/common.py and _record_competency_status in lms/djangoapps/grades/subsection_grade.py, then review the listed tests in test_subsection_grade.py, test_api.py, and rest_api/v1/tests/test_gradebook_views.py. Remove the setting and its guard, clean up setting-off tests and override decorators, and run the grades test suite. Done when the acceptance criteria pass and the remaining grades tests pass.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
User Story
As a platform operator, I want a learner's competency criterion status recorded on every subsection grade write without a setting to switch on, in order to have mastery tracked as soon as criteria are attached to content, with no configuration step to miss.
Description
openedx/openedx-platform#39179 gated the competency status write on the subsection grade path behind the Django setting ENABLE_COMPETENCY_MASTERY_TRACKING, default False, but upon further inspection, this isn't necessary per the PR comment discussion. Essentially, with no competency criteria in a deployment, record_graded_object_statuses in openedx-core runs one indexed query that returns no rows and queues no roll-up task, so a deployment that does not use competencies pays one SELECT per subsection grade write and nothing else, so there is no reason to have an extra flag to prohibit this call for non-CBE instances.
Remove the setting and run the competency call unconditionally. The change is in openedx-platform.
Context
- #701's acceptance scenario "An operator can decline competency tracking entirely" no longer holds once this ticket is done.
Acceptance Criteria
-
ENABLE_COMPETENCY_MASTERY_TRACKINGand its toggle annotation block are gone fromlms/envs/common.py. -
_record_competency_statusinlms/djangoapps/grades/subsection_grade.pycallsrecord_graded_object_statuseswithout consulting any setting, and its docstring no longer describes a tracking-off case. - No test in
lms/djangoapps/gradesoverrides the setting, the tests that asserted setting-off behavior are removed, and the rest of the grades test suite passes.
Technical Details
This is a suggested approach, not the source of truth. The User Story, Description, and Acceptance Criteria define what must be true when the work is done.
Approach
- Delete the
ENABLE_COMPETENCY_MASTERY_TRACKINGassignment and the.. toggle_name:annotation block above it fromlms/envs/common.py. - In
lms/djangoapps/grades/subsection_grade.py, remove theif not settings.ENABLE_COMPETENCY_MASTERY_TRACKING: return []guard at the top of_record_competency_statusand update its docstring. Leave thetransaction.atomic()blocks, theon_commitenqueue, and the event emission as they are; the setting never gated them. - Remove
test_setting_off_saves_grades_without_calling_coreandtest_setting_off_does_not_enqueuefromlms/djangoapps/grades/tests/test_subsection_grade.py, and remove every@override_settings(ENABLE_COMPETENCY_MASTERY_TRACKING=True)decorator fromtest_subsection_grade.py,tests/test_api.py, andrest_api/v1/tests/test_gradebook_views.py. The tests under those decorators keep running, now against the unconditional path.
Files to create and modify
| File | Change |
|---|---|
| lms/envs/common.py | modified: remove the setting and its annotation block |
| lms/djangoapps/grades/subsection_grade.py | modified: drop the setting guard in _record_competency_status |
| lms/djangoapps/grades/tests/test_subsection_grade.py | modified: remove the two setting-off tests and the override decorators |
| lms/djangoapps/grades/tests/test_api.py | modified: remove the override decorator |
| lms/djangoapps/grades/rest_api/v1/tests/test_gradebook_views.py | modified: remove the override decorator |
- Lenguaje dominante
- Python
- Estrellas
- 10
- Forks
- 35
- Merge medio
- 3 d 8 h
- PR fusionados (30 d)
- 30
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de openedx/openedx-core
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
openedx/openedx-core#922 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
openedx/openedx-core#831 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
openedx/openedx-core#827 ·
Los mantenedores suelen responder en 1 día
-
Followup Ticket - DraftingAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 10/100
openedx/openedx-core#928 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 Medio día Aptitud para principiantes 48/100
openedx/openedx-core#923 ·
Los mantenedores suelen responder en 1 día
Todos los issues de openedx/openedx-core
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
fritzprix/libr-agent#2612 ·
Los mantenedores suelen responder en 1 día
-
needs-triage presubmit-gate
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
gke-labs/kube-agents#5001 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
simonw/sqlite-utils#928 ·
Los mantenedores suelen responder en 3 días
-
colorado
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
freelawproject/juriscraper#2405 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
cline/mcp-marketplace#3576 ·