[BE] Remove the UNSTABLE markers from the CBE APIs
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
能力标准功能的工作完成后,在 openedx-core 和 openedx-platform 中搜索 CBE 代码里的 UNSTABLE 标记。在 openedx-core 中,先查看 src/openedx_learning/applets/cbe/api.py、src/openedx_learning/applets/cbe/rest_api/v1/serializers.py 和 src/openedx_learning/applets/cbe/rest_api/v1/views.py;也搜索 openedx-platform,以防添加了新的标记。只删除标记段落,保留每个 docstring 的完整内容,并确认不再有 CBE 标记,且现有测试在未作任何修改的情况下通过。
由索引模型根据 Issue 内容生成。
描述
User Story
As a developer of openedx-platform or a community plugin, I want the CBE APIs in openedx-core and openedx-platform to carry no UNSTABLE marker once the competency criteria work is complete, in order to rely on them as stable contracts that change only through the DEPR process.
Description
openedx-core's README states the convention: an API marked UNSTABLE may change at any time, and every other API is stable, with breaking changes announced through the community DEPR process. While the competency criteria work was in progress, the CBE applet's public functions, REST serializers, and REST views were marked UNSTABLE. Once the last feature PR of this epic merges, this code is complete for the release, and this ticket removes their markers so the functions read as the stable contracts they now are.
The definition of done is that no UNSTABLE marker of any CBE code remains anywhere in openedx-core or openedx-platform, found by searching the code at implementation time. The counts and locations in Technical Details are what a search found on the day this ticket was written. They are a starting point, not an inventory: a marker that was missed that day, or added after it, is in scope all the same.
Context
- This ticket runs after the last feature PR of this epic merges. Removing a marker commits the function to DEPR for any later breaking change, so it is the last change before release.
- #SP10-TBD confirms that there are still no UNSTABLE markers once the Student Progress work completes.
Acceptance Criteria
There is no manual QA path. Acceptance is determined by a PR reviewer verifying the following against the code:
- Searching openedx-core and openedx-platform for
UNSTABLEfinds no marker on any CBE code: nothing undersrc/openedx_learning/applets/cbe/in openedx-core, its REST API included, and nothing in the CBE code openedx-platform holds. Markers not listed in Technical Details count the same as the ones that are. - Every docstring that held a marker still reads as a complete contract description without it: no dangling "so its shape may change" clause and no empty paragraph.
- No behavior changes: each PR touches docstrings and comments only, and the existing tests pass unchanged.
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
- Run a repo-wide search for
UNSTABLEin openedx-core oversrc/,docs/, andREADME.rst, and in openedx-platform over the CBE code it holds. The search result at implementation time is the inventory. - Delete the UNSTABLE paragraph from each docstring the search finds on CBE code. Leave the rest of each docstring as it is.
- Re-read each edited docstring once, so the sentence before the removed paragraph still ends the thought.
- One PR per repo. The openedx-platform PR exists only if the search there finds a marker.
Starting point, from a search of upstream main in openedx-core and upstream master in openedx-platform on 2026-10-31:
| Repo | Markers | Files |
|---|---|---|
| openedx-core | 17 | src/openedx_learning/applets/cbe/api.py (12), src/openedx_learning/applets/cbe/rest_api/v1/serializers.py (3), src/openedx_learning/applets/cbe/rest_api/v1/views.py (2) |
| openedx-platform | 0 | The two UNSTABLE hits in the platform are in code unrelated to CBE and stay. |
Additional context
- The README's one sentence on the convention stays as it is. No file under
docs/mentions the markers, and openedx-core keeps no changelog file, so no documentation changes with this ticket. - #SP10-TBD repeats the search once the Student Progress work completes, since that work merges after this ticket and may add entry points with markers of their own.
- 主要语言
- Python
- 星标
- 10
- 派生
- 35
- 平均合并
- 3 天 8 小时
- 30 天内合并 PR
- 30
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
openedx/openedx-core 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
openedx/openedx-core#831 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 85/100
openedx/openedx-core#827 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 10/100
openedx/openedx-core#928 ·
维护者通常 1 天内回复
-
[Follow-up BE] Remove the ENABLE_COMPETENCY_MASTERY_TRACKING setting可能已有人在做 @alezconsultant 于 3 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 72/100
openedx/openedx-core#924 · 已指派 1 人 ·
维护者通常 1 天内回复
-
难度 3/5 半天 新手友好度 48/100
openedx/openedx-core#923 ·
维护者通常 1 天内回复
查看 openedx/openedx-core 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 76/100
SpikeInterface/spikeinterface#4924 ·
维护者通常 1 天内回复
-
难度 1/5 1-3 小时 新手友好度 88/100
aws-samples/sample-per-model-bedrock#782 ·
维护者通常 1 天内回复
-
bug javascript
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
No-op PreToolUse:Bash hook (bash_hook.py) still registered synchronously; adds latency and can time out at 10 s可能已有人在做 @alexgr-agent 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
alexgreensh/token-optimizer#313 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100