Фаза L: подготовить стенд к локальному сквозному прогону по реальному курсу
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Read docs/agent/environments.md and docs/agent/local-sweep.md, then inspect corpus_sweep.py, corpus_fetch.py, and the referenced AI modules. Treat the four requested additions as separate work areas: AI coverage, an end-to-end scenario, a read-only history report, and a phase-0 snapshot. Done means each is covered by tests or a documented safe local procedure, with no live Stepik submissions or writes to the owner's history database.
Written by the indexing model from the issue text.
Description
Зачем
После закрытия кодовых issue аудита 2026-08-10 предстоит фаза L — локальный сквозной прогон на машине владельца: наполнить базу реальными задачами уже пройденного курса и снять всё, что сломалось на настоящих данных. Порядок фаз — docs/agent/environments.md, инструкция прогона — docs/agent/local-sweep.md.
Сам стенд уже есть (corpus_fetch.py + corpus_sweep.py), но в нём три дыры. Пока они открыты, фаза L проверит меньше, чем должна, — и выяснится это уже за локальной машиной, где переделывать дорого. Подготовка делается в облачном окне и заранее.
Что сделать
1. Группа ai в corpus_sweep.py
MODULE_KEYS сейчас — core, learning, glossary, extras. Подсистема AI-подсказок (core/ai_hints.py, core/ai_grounding.py) не прогоняется ничем, хотя это единственная часть продукта, где полный цикл «решил → упал → получил объяснение» замыкается на внешний сервис.
Что должна покрыть группа на каждой упавшей задаче:
- сборка
FailureContextпо реальному падению и получение подсказки; - grounding: карточки глоссария действительно попадают в промпт, их число соответствует
ai_grounding_k; - потолок
ai_max_hints— обрыв сообщается явной строкой, а не выглядит как «подсказки кончились»; - поведение без согласия, с отозванным согласием (
--revoke-ai-consent) и без настроенного провайдера — ни один из трёх случаев не должен ронять прогон; - собственный
ai_system_promptподхватывается вместо встроенного.
Внешние вызовы в CI — на моках; живой провайдер только в локальном прогоне.
2. Сценарий «полный цикл на одной задаче»
Группы гоняются по отдельности — это проверка узлов. Фаза L существует ради цепочки, а разрывы живут на стыках:
скачал задачу → решил → проверил → история записалась
→ «Прогресс» показал верное → «Подучить» дал рекомендацию → экспорт собрался
Нужен режим, который прогоняет эту последовательность на одной задаче целиком и сверяет согласованность между звеньями (одна запись в истории, а не две; ключ задачи один и тот же во всех отчётах; экспорт содержит то же, что показал «Прогресс»).
3. Режим чтения настоящей базы истории
Прогон намеренно пишет во временную папку — это правильно и менять не нужно. Но отдельно нужен неразрушающий отчёт по реальной истории владельца: месяцы прогонов — единственные данные, на которых видно, врут ли агрегаты «Прогресса», серия и бейджи. Только чтение, без единой записи в ~/.stepik-grader/history.db.
4. Слепок фазы 0
Короткий сбор, снимаемый до облачных волн следующего аудита: формы накопленной истории (числа и структура, не содержимое), реальные имена папок задач курса (кириллица, точки, пробелы, длина), инвентарь курса --dry-run, версии ОС и Python. По нему строятся фикстуры облачных волн — фикстура по настоящим объёмам ловит то, что синтетическая пропускает.
Границы
- Ничего не отправляется на Stepik: батч-отправка решений под живым аккаунтом исключена (см.
local-sweep.md § Границы). - Чужой контент не коммитится: условия и тесты курса живут вне git.
- Слепок фазы 0 не содержит секретов и содержимого решений — только формы и числа.
- Локальная сессия не печатает содержимое
secrets.jsonи не переносит его в отчёт.
Когда выполнять
Подготовка (пункты 1–4) — сейчас, в облаке.
Сам прогон — после закрытия кодовых issue аудита. Документационные его не блокируют: прогон не читает README, ADR и docstring, поэтому их состояние на результат не влияет физически, и ждать их значит откладывать фазу L без пользы. Кодовые, наоборот, обязательны — иначе прогон выдаст заново то, что уже разбирается, и настоящие находки утонут в известных.
Граница проходит по вопросу: изменит ли фикс то, что продукт делает в прогоне — что напечатает грейдер, что покажет браузер, что ляжет в базу. Тексты ошибок, строки интерфейса и локали по этому критерию — код.
Не путать с условием архивации документа аудита: та требует закрытия или отклонения каждой находки, включая документационные. Это два разных рубежа.
Кто исполняет
Тот же 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/5 1-3 hours Newbie friendliness 76/100
lugassawan/swe-workbench#799 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
vllm-project/vllm#61131 ·
Maintainers usually reply within 1 day
-
Non-string form field names raise AttributeError when files are attachedPossibly taken @nightcityblade claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
kubernetes-client/python#2735 ·
Maintainers usually reply within 1 day
-
desktop help wanted test
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day