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

🧭 [Эпик] Фаза L: локальный сквозной прогон и наполнение базы реальными данными

Open
#1,053 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
25/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
python
Domain
tooling

Research direction

Start with the phase L contracts in docs/agent/environments.md, docs/agent/local-sweep.md, and docs/agent/course-walkthrough.md, then review the linked sub-issues (#1012, #1014, #1015, #1054, #1056, and #1057) to find a specific task. The epic is complete when the ordered work produces a real-data corpus and the required local runs and validations are done, while respecting its safety boundaries.

Written by the indexing model from the issue text.

Description

area/core enhancement epic

Сводный эпик фазы L — единственной фазы, которая выполняется на машине владельца. Контракт двухоконного режима — docs/agent/environments.md, инструкция прогона — docs/agent/local-sweep.md, протокол по курсам — docs/agent/course-walkthrough.md.

Зачем эпик

Работы фазы L лежали россыпью (#1012, #1014, #1015) и прирастают по ходу обсуждения. Их связывает не тема, а окно исполнения: всё это либо готовится в облаке для локального прогона, либо выполняется только локально. Порядок между ними жёсткий, и без общего места он теряется.

Что мы пытаемся получить

Базу с реальными данными — задачами пройденных курсов и решениями, включая неверные. Она нужна не сама по себе: на ней держатся «Прогресс», «Подучить», серия и бейджи, и проверить их на синтетике нельзя — облако честно этого не воспроизводит.

Порядок (рёбра важнее списка)

инвентарь курсов (#1015)
        ↓ без списка шагов нечего выгружать
выгрузка своей истории отправок  ← блокер снят: #1055 закрыта, история
        ↓                          скачивается целиком и не затирается
сверка вердиктов с платформой   ← здесь и вылезают расхождения
        ↓
подготовка стенда (#1012)  ⇄  оркестратор прогона (#1014)
        ↓
живой прогон с отправками     ← опционально, по итогам сверки

Какое окно что закрывает

Формулировка «выполнимо в облаке» здесь всегда значит узел, а не цепочку: без токена и живой сети до Stepik облако проверяет разбор и раскладку на моках, но не даёт ни одной настоящей задачи и ни одного вердикта платформы.

Задача Облако Локальная машина
#1015 инвентарь курсов иерархия секций, JSON-вывод, тесты на моках сам обход пяти курсов
#1054 база шагов со всех курсов команда и разбор ответа скачивание
#1056 сверка вердиктов формат отчёта и логика сверки на фикстурах данные из своей истории
#1014 оркестратор прогона код и журнал прогон
#1012 подготовка стенда — целиком
#1057 каталог мутаций целиком внешняя валидация отправкой

Отсюда практическое следствие: облачная сессия доводит каждую задачу до состояния «локально осталось запустить команду». Задача, закрытая только диффом, не считается закрытой — она ждёт прогона там, где поверхность настоящая.

Что даёт каждый источник данных

Разные источники закрывают разное, и подменять один другим нельзя:

Источник Что даёт Отправка на Stepik
Своя история отправок реальные данные + эталонные вердикты платформы, бесплатно не нужна
Мутации эталона (каталог) воспроизводимые ошибки с известным вердиктом нужна выборочно — валидировать каталог
Три роли (новичок/средний/эксперт) граница TLE, «верно, но медленно» нужна
Курс 82541 (не пройден) настоящие первые попытки нужна

Почему отправка всё-таки нужна. Каталог мутаций проверяет наш грейдер против наших же ожиданий — замкнутый круг: если мы неверно решили, что 12.30 равно 12.3, тест этого не поймает, он написан из того же заблуждения. Именно так родилась #940, где грейдер оказался зеленее платформы. Внешнюю валидацию даёт только отправка. Плюс сам путь attempt → submission → poll → вердикт (#683) — это продукт, и не отправляя его не проверить.

Почему одной своей истории мало. Многие задачи решены с первой попытки — корпус ошибок из неё выйдет бедным, а для «Подучить» нужны как раз ошибки.

Границы (действуют на все задачи эпика)

  • Батч-отправка решений под живым аккаунтом исключена; отправки — точечные и объяснимые.
  • Курс 82541 — отправка выключена по умолчанию.
  • Чужой код (включая reference-решения из обсуждений) в корпус не идёт.
  • secrets.json не покидает локальную машину и не печатается в отчёты.
  • Корпус и выгрузки не коммитятся.
  • Прогоны корпуса пишут в отдельную базу (STEPIK_GRADER_HISTORY_DB), рабочая история не пачкается.

Состав

Подзадачи привязаны как sub-issues.

Dominant language
Python
Stars
3
Forks
6
Avg merge
2h 41m
Merged PRs (30d)
48

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.