🎯 [Хвост] CI, guard-скрипты и релиз — 78 находок по файлам
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 15/100
Research direction
Start with docs/audit/2026-08-10-full-roles.md (§ 5 and § 5-бис) and the listed files, especially scripts/check_docs_guardrails.py, scripts/check_version_consistency.py, scripts/check_contrast.py, and .github/workflows/ci.yml. The issue describes a broad audit backlog with many findings and some work already tracked in other issues, so first identify a specific unresolved finding and its evidence. Done means each finding is fixed by a PR or explicitly rejected, and every guard has a test that fails on empty input.
Written by the indexing model from the issue text.
Description
Хвост аудита 2026-08-10 по направлению. Полные формулировки, доказательства и репро — в документе:
docs/audit/2026-08-10-full-roles.md (§ 5 и § 5-бис). Эпик хвоста: #995 · Тяжёлое направления: #988
78 находок: 0 high · 9 medium · 69 low. Все верифицированы скептиками.
Находки по файлам
Чек-лист ведётся по файлам: семь десятков построчных пунктов нечитаемы и правятся с конфликтами. Строка закрывается, когда закрыты все её ID; частично закрытая остаётся неотмеченной, а закрытые ID названы явно.
-
.github/workflows/ci.yml— 12:GRW-1-02·REL-1-02·REL-1-04·REL-1-05·REL-1-06·REL-3-04·REL-3-05·REV-2-04·REV-2-05·STR-2-01·STR-2-03·TRE-1-04. Частично:REL-1-02иSTR-2-01— concurrency-группы и CI-веер (#1038) -
pyproject.toml— 11 (0/3/8):PKG-1-01·REL-2-04·STR-2-02·ADV-1-05·PKG-1-03·PKG-1-04·REL-2-03·REL-2-05·REL-2-06·REV-6-05·VIS-2-04. Частично:STR-2-02—--cov=scriptsбольше не втягивает разовые тулзы (#1144) -
scripts/check_docs_guardrails.py— 9:AUD-2-07·LINK-1-03·LINK-1-04·MAP-3-05·MAP-5-02·MAP-5-05·REV-2-02·REV-2-03·STR2-5-04 -
.github/workflows/release.yml— 6 (0/3/3):REL-1-01·REL-3-06·REV-3-01·LINK-3-02·REL-1-07·REV-3-05. Частично:REL-1-01— checkout послеdownload-artifactстиралdist/(#988);REL-3-06— проверка содержимого колеса (#1127), ждёт настоящего релиза в #953 -
scripts/check_version_consistency.py— 4:AUD-2-06·CANON-1-03·REL-2-02·REV-2-01 -
.github/dependabot.yml— 3:LINK-3-06·REL-2-07·TRE-1-06 -
scripts/check_ruff_pin.py— 3:AUD-2-01·AUD-2-05·REL-3-03— скрипт не проверялlanguage: system, хотя докстринг заявлял это первой проверкой (#791; проверено по коду — строка 68) -
scripts/corpus_mutations.py— 3 (0/1/2):STR2-4-02·QA-3-02·QA-3-05 -
scripts/corpus_run.py— 3:QA-3-03·QA-3-04·QA-3-07 -
scripts/perf_baseline.py— 3:PERF-1-04·PERF-1-05·PERF-1-07 -
scripts/version.py— 3:CANON-1-01·CANON-1-02·REL-2-01 -
.github/ISSUE_TEMPLATE/bug_report.yml— 2:GRW-1-06·LINK-3-03 -
scripts/check_contrast.py— 2 (0/1/1):AUD-2-02·DES-1-04 -
scripts/check_web_imports.py— 2:ARCH-2-05·AUD-2-04. Живы: строка 81 по-прежнемуglob("*.js"), а неrglob— переезд модуля в подкаталог гейт ослепляет -
scripts/generate_ci_coveragerc.py— 2:REL-3-07·REV-2-06 -
.github/ISSUE_TEMPLATE/feature_task.md— 1:GRW-1-03 -
.github/PULL_REQUEST_TEMPLATE.md— 1:GRW-1-04 -
.github/badges/good-first-issues.json— 1:GRW-1-01 -
.github/workflows/claude.yml— 1:SEC-3-05 -
scripts/check_locale_guardrails.py— 1 (0/1/0):ED-2-03 -
scripts/check_ui_locale_guardrails.py— 1:AUD-2-03 -
scripts/combine_coverage.py— 1:REL-1-03 -
scripts/corpus_fetch.py— 1:QA-3-06 -
scripts/generate_draft_cards.py— 1:DATA-1-06 -
scripts/skip_inventory.py— 1:QA-2-01
Сквозная тема: «guard зелёный, когда проверять нечего»
Это не набор отдельных дефектов, а один класс, найденный в четырёх скриптах — и он же был найден прошлым аудитом, то есть вернулся:
check_version_consistency.pyглотает любую ошибку git и печатаетOK: versions consistent;check_docs_guardrails.pyберёт вход черезif is_file()иglob— переезд файла обнуляет проверку;check_contrast.pyпроверял только перечисленные пары, пропуская токены вне списка (уже чинилось, проверить полноту);ci.yml— падение flakysandbox-linuxвыключает cross-OS гейт покрытия, job остаётся зелёным.
Правило для закрытия направления: у каждого guard'а должен быть тест «пустой вход → красный». Без него класс вернётся третий раз.
- тест «пустой вход → красный» для каждого guard-скрипта — сквозной пункт, закрывается последним
Отдельно: триггеры CI
ci.yml объявляет on: pull_request без types, поэтому работают только opened, synchronize, reopened. ready_for_review в список не входит — PR, созданный черновиком, не получает проверок вовсе, пока в него не запушат новый коммит. Фикс — одна строка, но правка .github/workflows/ требует отдельной задачи по CLAUDE.md; детали в #988.
Прогонный корпус существует, но не работает
Четыре скрипта corpus_* плюс docs/dev/corpus.md описывают регрессионную защиту мутациями. Фактически: corpus/tasks/ пуст (проверено — в каталоге только README.md), corpus_run.py не упомянут в CI. А REV-7-05 добавляет принципиальное: корпус мутирует только решение, поэтому класс «испорчена постановка задачи» — тот самый, что дал девять high этого аудита, — ему недостижим по построению.
Критерий приёмки
Каждая находка либо закрыта PR, либо явно отклонена с причиной. Отдельно: каждый guard имеет тест на пустом входе, и он красный.
- Dominant language
- Python
- Stars
- 3
- Forks
- 6
- Avg merge
- 12h 26m
- Merged PRs (30d)
- 51
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
-
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
-
area/core difficulty/hard enhancement
Difficulty 4/5 3-5 days Newbie friendliness 35/100
ArtVsMark/Stepik-Python-Grader#1621 · 1 comment ·
Maintainers usually reply within 1 day
-
area/ci difficulty/easy tech-debt
Difficulty 3/5 Half a day Newbie friendliness 25/100
ArtVsMark/Stepik-Python-Grader#1613 ·
Maintainers usually reply within 1 day
-
area/web difficulty/medium enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 18/100
ArtVsMark/Stepik-Python-Grader#1608 ·
Maintainers usually reply within 1 day
All issues in ArtVsMark/Stepik-Python-Grader
Similar issues
-
effort: low prio: low ready
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
digitalfabrik/integreat-cms#4616 ·
Maintainers usually reply within 5 days
-
bug difficulty:2 good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
MakazhanAlpamys/Soup#1865 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
FinanceFlash/unvibecode#233 ·
Maintainers usually reply within 1 day
-
area: agents area: docs good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openapi/gknowledge#23 ·
-
useless-suppression reported for deprecated-* messages that should be exemptPossibly taken @adityasinha-ghub claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
pylint-dev/pylint#11656 ·
Maintainers usually reply within 1 day