🎯 [Хвост] Веб: сервер, API и адаптеры — 72 находки по файлам
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
Start with docs/audit/2026-08-10-full-roles.md (§ 5 and § 5-bis), then review the listed web files, especially src/stepik_grader/web/api_routes.py. Resolve which web-to-core rule applies by comparing ADR-0010 with web-contracts.md:258, and use tests/e2e/ to run the browser scenarios, including the untested playground and trace. Done means every finding has a merged PR or a documented rejection, and the uncovered endpoints and sections have been exercised in a real browser.
Written by the indexing model from the issue text.
Description
Хвост аудита 2026-08-10 по направлению. Полные формулировки, доказательства и репро — в документе:
docs/audit/2026-08-10-full-roles.md (§ 5 и § 5-бис). Эпик хвоста: #995
72 находки: 0 high · 15 medium · 57 low. Все верифицированы скептиками.
| Файл | Находок | h/m/l | ID находок |
|---|---|---|---|
src/stepik_grader/web/api_routes.py |
29 | 0/7/22 | LNCH-4-02 · REV-3-02 · SEC-1-01 · SEC-1-03 · SEC-3-01 · SET-2-01 · STR2-2-07 · ARCH-2-02 · ARCH-2-06 · CNC-2-03 · CNC-2-05 · FZZ-4-03 · FZZ-4-04 · FZZ-4-05 · LNCH-4-03 · LNCH-5-04 · LNG-2-03 · MTX-10-03 · MTX-2-04 · PAIR-2-05 · RUN-3-05 · RUN-3-07 · SEC-1-02 · SEC-1-05 · SET-2-04 · SET-2-05 · SET-3-04 · SET-3-06 · TW-3-01 |
src/stepik_grader/web/viewmodels.py |
11 | 0/2/9 | ARCH-2-01 · RUN-3-01 · ARCH-2-07 · CNC-3-03 · JRN-3B-04 · LNCH-3-07 · PERF-1-06 · RUN-3-02 · SET-3-05 · TW-1-01 · TW-2-04 |
src/stepik_grader/web/runs.py |
7 | 0/1/6 | RUN-3-03 · CNC-2-01 · CNC-2-02 · CNC-2-04 · CNC-3-01 · RUN-3-06 · SEC-3-03 |
src/stepik_grader/web/server.py |
6 | 0/0/6 | CANON-5-06 · JRN-4B-04 · LNCH-2-05 · LNCH-4-04 · LNG-3-03 · SEC-1-04 |
src/stepik_grader/web/settings_adapter.py |
4 | 0/0/4 | ADD-1-05 · ADD-1-06 · LNCH-3-06 · SET-2-07 |
src/stepik_grader/web/http_guards.py |
3 | 0/0/3 | FZZ-4-01 · FZZ-4-02 · RUN-3-04 |
src/stepik_grader/web/downloader_adapter.py |
2 | 0/0/2 | ADD-1-02 · JRN-3B-03 |
src/stepik_grader/web/feedback_adapter.py |
2 | 0/0/2 | ADD-4-06 · ADD-4-07 |
src/stepik_grader/web/glossary_adapter.py |
2 | 0/1/1 | ADD-1-03 · INS-1-02 |
src/stepik_grader/web/reference_adapter.py |
2 | 0/1/1 | ADD-1-01 · ADD-1-04 |
src/stepik_grader/web/auth_adapter.py |
1 | 0/0/1 | JRN-3B-02 |
src/stepik_grader/web/grading.py |
1 | 0/0/1 | ARCH-2-03 |
src/stepik_grader/web/i18n.py |
1 | 0/0/1 | ED-2-05 |
src/stepik_grader/web/rules_adapter.py |
1 | 0/0/1 | ADD-1-07 |
С чего начинать
api_routes.py держит 29 находок из 72 — сорок процентов направления в одном файле. Внутри две группы, которые стоит развести:
- согласие и приватность (REV-3-02, SEC-1-, SET-2-): веб-путь AI-подсказки проверяет булев флаг согласия, но не получателя, — то есть согласие, данное одному адресату, работает для любого. Это же вернувшийся дефект
SECD-02, закрытый только в CLI (см. #987); - конкурентность и состояние прогонов (CNC-2-, CNC-3-, RUN-3-*): гонки при параллельных запросах, зависания без пути восстановления.
ARCH-2-* — отдельная тема: граница web→core. ADR-0010 объявляет фасад web/grading, но web-contracts.md:258 описывает уже отменённое правило, а код местами ходит в core напрямую. Прежде чем чинить точечно, стоит определить, какое правило действует.
Важная оговорка о полноте
Браузер не открывался ни разу. Критики прогонной фазы установили: на 4875 строк фронтенд-кода пришлось 2 находки из прогона, остальное — чтение и curl. Из примерно 24 эндпоинтов не вызывались семь; playground и пошаговый трейс не запускались вовсе.
Поэтому направление не считается проверенным, пока не пройден сценарий в реальном браузере. Инструменты для этого в проекте есть — 33 сценария Playwright в tests/e2e/.
Критерий приёмки
Каждая находка либо закрыта PR, либо явно отклонена с причиной. Отдельно: непокрытые эндпоинты и разделы (playground, трейс) должны быть пройдены в браузере, а не только запросом.
Чек-лист по файлам
Группами, а не по одной находке: их 74, и список из семидесяти четырёх строк
нечитаем. Галочка ставится тем же заходом, что и мерж закрывающего PR, и
называет исход — номер PR либо причину отклонения.
-
src/stepik_grader/web/api_routes.py— 29 (0/7/22): LNCH-4-02 · REV-3-02 · SEC-1-01 · SEC-1-03 · SEC-3-01 · SET-2-01 · STR2-2-07 · ARCH-2-02 · ARCH-2-06 · CNC-2-03 · CNC-2-05 · FZZ-4-03 · FZZ-4-04 · FZZ-4-05 · LNCH-4-03 · LNCH-5-04 · LNG-2-03 · MTX-10-03 · MTX-2-04 · PAIR-2-05 · RUN-3-05 · RUN-3-07 · SEC-1-02 · SEC-1-05 · SET-2-04 · SET-2-05 · SET-3-04 · SET-3-06 · TW-3-01 -
src/stepik_grader/web/viewmodels.py— 11 (0/2/9): ARCH-2-01 · RUN-3-01 · ARCH-2-07 · CNC-3-03 · JRN-3B-04 · LNCH-3-07 · PERF-1-06 · RUN-3-02 · SET-3-05 · TW-1-01 · TW-2-04 -
src/stepik_grader/web/runs.py— 7 (0/1/6): RUN-3-03 · CNC-2-01 · CNC-2-02 · CNC-2-04 · CNC-3-01 · RUN-3-06 · SEC-3-03 -
src/stepik_grader/web/server.py— 6 (0/0/6): CANON-5-06 · JRN-4B-04 · LNCH-2-05 · LNCH-4-04 · LNG-3-03 · SEC-1-04 -
src/stepik_grader/web/settings_adapter.py— 4 (0/0/4): ADD-1-05 · ADD-1-06 · LNCH-3-06 · SET-2-07 -
src/stepik_grader/web/http_guards.py— 3 (0/0/3): FZZ-4-01 · FZZ-4-02 · RUN-3-04 -
src/stepik_grader/web/downloader_adapter.py— 2 (0/0/2): ADD-1-02 · JRN-3B-03 -
src/stepik_grader/web/feedback_adapter.py— 2 (0/0/2): ADD-4-06 · ADD-4-07 -
src/stepik_grader/web/glossary_adapter.py— 2 (0/1/1): ADD-1-03 · INS-1-02 -
src/stepik_grader/web/reference_adapter.py— 2 (0/1/1): ADD-1-01 · ADD-1-04 -
src/stepik_grader/web/auth_adapter.py— 1 (0/0/1): JRN-3B-02 -
src/stepik_grader/web/grading.py— 1 (0/0/1): ARCH-2-03 -
src/stepik_grader/web/i18n.py— 1 (0/0/1): ED-2-05 -
src/stepik_grader/web/rules_adapter.py— 1 (0/0/1): ADD-1-07
Generated by Claude Code
- Dominant language
- Python
- Stars
- 3
- Forks
- 6
- Avg merge
- 2h 41m
- Merged PRs (30d)
- 48
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing 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.
More from ArtVsMark/Stepik-Python-Grader
-
Difficulty 4/5 3-5 days Newbie friendliness 18/100
ArtVsMark/Stepik-Python-Grader#1634 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 32/100
ArtVsMark/Stepik-Python-Grader#1633 ·
Maintainers usually reply within 1 day
-
Каталог v1.12.0: Python 3.14 / 3.15 / 3.16 — 3.15 в основной CI, 3.16 в python-next, подъём действийOpen
Difficulty 3/5 1-2 days Newbie friendliness 30/100
ArtVsMark/Stepik-Python-Grader#1632 ·
Maintainers usually reply within 1 day
-
area/glossary bug difficulty/medium
Difficulty 4/5 3-5 days Newbie friendliness 35/100
ArtVsMark/Stepik-Python-Grader#1629 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 8/100
ArtVsMark/Stepik-Python-Grader#1626 ·
Maintainers usually reply within 1 day
All issues in ArtVsMark/Stepik-Python-Grader
Similar issues
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
btclib-org/btclib-node#1955 ·
Maintainers usually reply within 1 day
-
documentation v0.9.2
Difficulty 2/5 Half a day Newbie friendliness 72/100
khuisman/mcp-gee-sweet#1033 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ossf/cve-bin-tool#5966 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 2 days
-
write_iceberg ignores the table's write.parquet.compression-codec propertyPossibly taken @YuangGao claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Eventual-Inc/Daft#7606 ·
Maintainers usually reply within 1 day