🎯 [Подэпик] Документы разошлись с кодом, с собой и с англоязычной витриной
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- markdown, python
- Domain
- documentation, tooling
Research direction
Start with docs/audit/2026-08-10-full-roles.md § 5-бис and the four remaining actions in the issue; then read check_docs_guardrails.py, README.en.md, README.md, and CLAUDE.md § Источники истины. The scope spans documentation, code-link checks, and issue templates, so confirm which part you are taking on before starting. Done means the listed acceptance criteria hold, including matching security-section coverage in both READMEs.
Written by the indexing model from the issue text.
Description
Фаза 3 аудита 2026-08-10 (документы как система) + ось «код → документы» из фазы 4. Документ: docs/audit/2026-08-10-full-roles.md § 5-бис
124 находки, ни одной high — расхождение в документе не портит вердикт грейдера. Но часть из них вводит в заблуждение о рисках, и это отдельный разговор.
Находки
Галочка ставится тем же заходом, что и мерж закрывающего PR, и называет исход. Неотмеченная строка означает «не закрыта или не проверена»; где состояние подтверждено по файлам прямо сейчас — это сказано в строке.
Безопасность описана неверно — единственная группа, где ошибка документа меняет решение пользователя о рисках:
-
READER-4-01— заявлено «ничего не уходит в сеть», хотя каналов исходящего трафика четыре → раздел «Куда грейдер ходит в сеть»: таблица каналов с указанием, что и когда уходит (#1193) -
READER-4-04— не назван главный локальный риск: проверяемое решение исполняется с доступом кsecrets.jsonс OAuth-токеном (SECURITY.md:41) -
READER-4-02— история указывалась «в рабочей папке», хотя лежит в~/.stepik-grader/history.db; после #1186 туда же уехали настройки → таблица данных называет, где лежит каждый файл (#1193) -
PAIR-4-02— лимит памяти заявлен «на POSIX (Linux/macOS)», аprlimit— только Linux: на macOS лимита нет (configuration.md:378) -
CANON-2-04— безусловное «изоляции ФС и сети нет» стоит в том же файле, где описан--sandbox(configuration.md:381) -
CANON-2-03— канон по безопасности не был определён:CLAUDE.mdне упоминалSECURITY.md→ строка в таблице источников истины (#1193)
Английская витрина обрывается:
-
READER-5-01/PAIR-4-01— секции безопасности нет вовсе (README.en.md:139). Жива: в оглавлении файла нет ни одного раздела про безопасность -
PAIR-4-03— у--sandboxобещана «FS isolation» без оговорок из таблицыSECURITY.md(README.en.md:160) -
READER-5-02/READER-5-03— ссылки на веб-интерфейс и «Full reference» молча уводят в русскоязычныеdocs/(README.en.md:112,192) -
READER-5-05— дан только шимstepik-grader, без запасногоpython -m stepik_grader(README.en.md:66)
Ссылки из кода никуда не ведут — ось, которую не проверяет ни один guard (check_docs_guardrails.py смотрит только внутри *.md, LINK-1-04):
-
LINK-1-01—docs/audit-2026-07.mdвhistory.py:5и ещё трёх местах: файл переехал вdocs/archive/ -
LINK-1-02—docs/trace-format.mdбез направленияdev/(trace-player.js:207): ни файла, ни якоря -
LINK-1-05— сообщения об ошибках слали вdocs/, которых нет при установке через pip и pipx → в тексты подставлен абсолютный URL, гейт локалей заворачивает репо-относительные пути (#1129) -
LINK-1-04— сам guard не смотрит ссылки из кода: докстринги, комментарии, строки локалей
Канон разошёлся с копиями:
-
CANON-5-01— объявлено отменённое правило web→core: код ходит вcoreнапрямую, минуя фасад (web-contracts.md:258) -
CANON-5-02— статус-трекер числит палитру команд реализованной, хотя она удалена (web-design.md:149) -
CANON-5-03— CSP назван строгим и запрещающим инлайн-стили, хотяstyle-srcразрешает'unsafe-inline'(web-interface.md:416) -
PAIR-3-02— ADR требует «тихо деградировать», а тот же ADR и код (#794) — называть повреждение вслух (adr/0011-local-persistence.md:86) -
READER-3-01— точкой входа назван несуществующийcli.py. Не воспроизводится: вCLAUDE.mdбольше нет ни одного упоминанияcli.py, точки входа описаны через пакетcli/ -
CANON-4-05— ratchet на внешнюю витрину ловит только доменartvsmark.github.io,docs_urlне ограничен ничем (test_glossary.py:199)
Онрамп контрибьютора рвётся:
-
READER-2-01—pytestна подмножестве падал из-за глобальногоfail_under=85: красное на первом же цикле правки → порог переехал в флаг шага CI (#1122) -
READER-2-02— список «локальных гейтов, зеркалящих CI» неполон: 4 команды против 6 guard-скриптов (CONTRIBUTING.md:35) -
READER-2-03— требование «язык артефактов — русский» есть только вCLAUDE.md, который контрибьютор читать не обязан (CONTRIBUTING.md:330) -
LINK-3-03— ни один шаблон issue не ставитarea/*иdifficulty/*, хотя политика объявляет их обязательными
Что делать
Начать с— сделано (#1193). Осталась вторая половина группы:SECURITY.mdREADME.en.md, где раздела о безопасности нет вовсе.- Расширить
check_docs_guardrails.pyна ссылки из кода (докстринги, комментарии, строки локалей) — иначе класс вернётся. - Пройти список канона в
CLAUDE.md § Источники истиныи привести копии в соответствие либо заменить их ссылками. - Шаблоны issue — с обязательными метками.
Критерий приёмки
Ни одной ссылки из кода в несуществующий документ (проверяется guard'ом). README.en.md и README.md совпадают по составу разделов о безопасности. Ни один документ не описывает удалённую функцию как живую.
Generated by Claude Code
- 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
-
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
-
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
-
area:provisioning effort:S priority:P2 provider:local-libvirt risk:daytime-only status:in-progress type:bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
randomparity/kdive#3203 · 2 comments ·
Maintainers usually reply within 1 day
-
get() for StrEnumPossibly taken @FeJo5952 claimed this today. Opengood first issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
collective/icalendar#1921 · 1 comment ·
Maintainers usually reply within 1 day