Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Фаза L: подготовить стенд к локальному сквозному прогону по реальному курсу

Open
#1,012 0 comments 0 reactions 0 assignees View on GitHub

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
python
Domain
testing, tooling

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

area/core difficulty/medium enhancement

Зачем

После закрытия кодовых 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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ArtVsMark/Stepik-Python-Grader

All issues in ArtVsMark/Stepik-Python-Grader

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.