- Зачем:
- закрыты 3 вспомогательных артефакта из course_program.md §3.3: glossary, cheat sheet, mentor notes.
- README переписан с фокусом на ценность для студента.
- Что:
- создан docs/glossary.md (16 терминов, сгруппированных по темам с параллелями к DWH).
- создан docs/mentor_notes.md (тайминг, типичные вопросы, checkpoint-ы, формат «менти работает сам»).
- добавлена секция «Краткая шпаргалка» в docs/stack_reference.md (S3-пути, таблицы, SQL-команды, маунты).
- README.md переписан: лид с навыками, убрано дублирование со stack_reference.
- обновлены перекрёстные ссылки в AGENTS.md, course_program.md, maintainer_guide.md.
- Проверка:
- все ссылки между документами валидны (glossary.md, mentor_notes.md существуют).
- термины glossary и команды шпаргалки верифицированы по содержимому ноутбуков.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- обучение студентов базовому обслуживанию Iceberg-таблиц (compaction, expire_snapshots) и закрепление навыков всего курса.
- Что:
- создан notebooks/08_maintenance_and_final_lab.ipynb с обзором проблемы мелких файлов и её решения.
- добавлена финальная сквозная практика (raw -> bronze -> silver -> Trino -> schema evolution -> обслуживание) в namespace lakehouse.final.
- в финальную практику включены педагогические подсказки и конкретные задания (trip_duration_minutes).
- статус модуля 8 в планах обновлен до Ready for validation.
- Проверка:
- ручная проверка выполнения ячеек в ноутбуке и синтаксиса stored procedures Iceberg.
- Зачем:
- обучение студентов безопасным изменениям таблиц и механизмам отката Iceberg.
- Что:
- создан notebooks/07_safe_table_changes.ipynb с демонстрацией ALTER TABLE, VERSION AS OF и rollback.
- в ноутбук добавлена самостоятельная работа на демо-таблице и чекпоинт для самопроверки.
- статус модуля 7 в планах обновлен до Ready for validation.
- Проверка:
- ручная верификация структуры ноутбука и синтаксиса Spark SQL/trino_query.
- Зачем:
- продемонстрировать возможность доступа нескольких движков к одной Iceberg-таблице через общий каталог.
- Что:
- создан notebooks/06_spark_and_trino_on_same_table.ipynb с примерами write (Spark) -> read (Trino).
- в jupyter/Dockerfile добавлен клиент trino.
- в START_HERE.md и docs/stack_reference.md добавлена инструкция по подключению DBeaver к Trino.
- статус модуля 6 в планах обновлен до Ready for validation.
- Проверка:
- ручная проверка выполнения ячеек в ноутбуке (Python trino client).
- проверка наличия всех инструкций в документации.
- Зачем:
- демо-ячейки последующих модулей не должны зависеть от домашних заданий предыдущих — модуль 5 использует lookup в демо-коде для JOIN.
- Что:
- модуль 4: секция 8 из домашки (5 пустых ячеек) превращена в демо с заполненным кодом (чтение CSV, CTAS).
- модуль 4: новая домашка (секция 9) — осмотр metadata lookup-таблицы, сравнение с основной.
- модуль 4: секции перенумерованы (9→10, 10→11), завершение упоминает обе bronze-таблицы.
- модуль 5: assert-сообщение для lookup обновлено (убрана ссылка на «самостоятельное задание»).
- планы модулей 4 и 5: обновлены дизайн-решения, структура секций и раздел рисков.
- Проверка:
- прогнать готовые ячейки модуля 4 → lookup-таблица создаётся автоматически → модуль 5 проходит без ошибок.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- обучение переходу от bronze-таблицы к очищенному и обогащенному silver-слою.
- Что:
- создан notebooks/05_silver_layer.ipynb с пайплайном фильтрации, нормализации и JOIN.
- в ноутбук добавлены проверки качества на уровнях строк, схемы и агрегатов.
- статус модуля 5 в планах обновлен до Ready for validation.
- Проверка:
- ручная проверка структуры ноутбука и корректности Spark-трансформаций.
- Зачем:
- нужно показать базовые операции обслуживания Iceberg-таблиц и финальную практику.
- Что:
- создан файл plans/module-08-maintenance-and-final-lab.md с планом модуля.
- обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
- проверка согласованности ссылок и структуры документации.
- Зачем:
- нужно продемонстрировать возможности Iceberg по schema evolution и time travel.
- Что:
- создан файл plans/module-07-safe-table-changes.md с планом модуля.
- обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
- проверка согласованности ссылок и структуры документации.
- Зачем:
- нужно продемонстрировать возможность одновременной работы Spark и Trino с одной Iceberg-таблицей.
- Что:
- создан файл plans/module-06-spark-and-trino-on-same-table.md с планом модуля.
- обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
- проверка согласованности ссылок и структуры документации.
- Зачем:
- необходимо расширить курс до silver-слоя с воспроизводимыми трансформациями.
- Что:
- создан файл plans/module-05-silver-layer.md с планом модуля.
- обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
- проверка согласованности ссылок и структуры документации.
- Зачем:
- нужен практический модуль 4, который переводит студента от raw-файлов к первой управляемой Iceberg-таблице.
- Что:
- добавлен ноутбук notebooks/04_bronze_with_iceberg.ipynb с CTAS в bronze, разбором metadata tables и структурой хранения в MinIO.
- добавлены пояснения про namespace, сравнение raw vs Iceberg и разбор snapshot-полей по итогам ревью.
- обновлен plans/README.md строкой для модуля 4.
- Проверка:
- синтаксис всех code-ячеек ноутбука проверен локальной компиляцией.
- тесты пройдены пользователем.
- Зачем:
- нужен следующий практический шаг после модулей 1-2: доставить raw-данные в MinIO и впервые прочитать их через Spark.
- Что:
- добавлен ноутбук модуля 3 с raw ingest, first read, проверкой схемы, null-анализом и поиском аномалий.
- обновлены START_HERE, stack reference и docker-compose для data bundle в ./data и mount в /opt/data.
- добавлены правила игнорирования data bundle, .gitkeep для пустой директории и обновлён статус плана модуля.
- Проверка:
- docker compose config.
- выполнение notebooks/03_raw_ingest_and_first_read.ipynb на локальном data bundle.
- Зачем:
- нужен согласованный draft модуля про первую Iceberg-таблицу и переход от raw к bronze.
- Что:
- добавлен план `module-04-bronze-with-iceberg.md` с deliverables, структурой ноутбука и checkpoints.
- зафиксированы решения по CTAS, инспекции metadata Iceberg и зависимости модуля 5 от bronze-таблицы.
- Проверка:
- план вручную сверен с `docs/course_program.md` и `docs/course_prd.md`.
- runtime-проверка ноутбука и SQL-операций на стенде не выполнялась.
- Зачем:
- нужен согласованный draft модуля про raw-данные, первое чтение в Spark и подготовку data bundle.
- Что:
- добавлен план `module-03-raw-ingest-and-first-read.md` с deliverables, структурой ноутбука и acceptance criteria.
- зафиксированы требования к onboarding-документации, raw-ingest в MinIO и валидации data bundle.
- Проверка:
- план вручную сверен с `docs/course_program.md`, `docs/course_prd.md` и `docs/stack_reference.md`.
- runtime-проверка стенда и ноутбука не выполнялась.
- Зачем:
- необходимо дать студенту практический инструмент для понимания разделения storage, catalog и compute.
- Что:
- создан notebooks/02_lakehouse_mental_model.ipynb с демонстрацией записи в Spark и инспекцией в PostgreSQL и MinIO.
- в ноутбук добавлена таблица сравнения Lakehouse vs классические СУБД.
- реализованы механизмы идемпотентности (CREATE OR REPLACE TABLE) и автоматической очистки ресурсов.
- обновлен статус Модуля 2 в планах на "Ready for validation".
- Проверка:
- проверена структура JSON ноутбука, наличие всех демонстрационных и самостоятельных ячеек, а также корректность путей к MinIO (prefix warehouse/).
- Зачем:
- необходимо зафиксировать структуру второго модуля «Ментальная модель Lakehouse» и подготовить инфраструктуру для инспекции компонентов.
- Что:
- создан файл plans/module-02-lakehouse-mental-model.md с детальным планом работ, целями и чекпоинтом.
- в jupyter/Dockerfile добавлены библиотеки boto3 и psycopg2-binary для программного доступа к MinIO и PostgreSQL из ноутбуков.
- модуль 2 добавлен в общий индекс планов в plans/README.md.
- Проверка:
- файл плана соответствует методике курса, в Dockerfile запинены версии библиотек.
- Зачем:
- нужно точнее показать пользовательский путь по стенду и добавить понятную точку контакта с автором курса.
- Что:
- обновлена архитектурная диаграмма в README.md: добавлены пользователь, точки входа и явное разделение access, compute и shared services.
- уточнены подписи к ролям компонентов стенда.
- добавлен блок с контактами автора и предложением менторского разбора тем по Data Engineering.
- Проверка:
- сверены диаграмма и описания в README.md с фактической топологией docker-compose и сценарием использования через JupyterLab и Trino.
- Зачем:
- нужно убрать смешение маршрута студента с внутренними документами сопровождения репозитория.
- Что:
- переработан README.md как верхнеуровневый вход в репозиторий без ссылок на внутренние maintainer-документы.
- добавлен docs/stack_reference.md для технического reference стенда и уточнены его роли относительно START_HERE.md.
- синхронизированы AGENTS.md и docs/maintainer_guide.md под новую границу между onboarding и внутренней документацией.
- Проверка:
- сверены README.md, START_HERE.md, docs/stack_reference.md, AGENTS.md и docs/maintainer_guide.md на согласованность маршрута и аудиторий.
- Зачем:
- нужно отделить стабильные правила для агента от изменчивой структуры курса и стенда.
- Что:
- сокращен и переписан AGENTS.md под текущую модель репозитория как курса вокруг Lakehouse-стенда.
- добавлен docs/maintainer_guide.md с картой репозитория, источниками истины и правилами синхронизации документации.
- Проверка:
- сверены AGENTS.md и docs/maintainer_guide.md с README.md, START_HERE.md, docs/course_prd.md и docs/course_program.md.
- Зачем:
- нужен воспроизводимый вход в курс и единое место хранения планов по модулям.
- Что:
- добавлены `plans/README.md`, living plan Модуля 1, `START_HERE.md` и канонический ноутбук `01_environment_and_smoke_test.ipynb`, а `cluster_smoke.py` расширен до reusable helper и CLI smoke test.
- уточнены onboarding-материалы и окружение: добавлены Spark UI в `README.md`, ресурсы хоста и креды MinIO в `START_HERE.md`, использован `NB_GID` в `jupyter/Dockerfile`, в ноутбуке усилены самостоятельные задания и добавлены `cell id`, а пояснения в `cluster_smoke.py` переведены на русский для студентов.
- обновлены `README.md`, `AGENTS.md` и archive howto, удалены устаревшие `spark-basic-test.ipynb` и `03_partitioning_and_schema_evolution.ipynb`.
- Проверка:
- `python3 -m py_compile src/spark/cluster_smoke.py src/spark/__init__.py`.
- `docker compose build spark-master` и `docker compose build jupyter`.
- `docker compose up -d`, `docker compose exec jupyter python3 -c "from spark.cluster_smoke import create_spark_session, run_cluster_smoke; spark=create_spark_session(app_name='module-01-validation'); print(run_cluster_smoke(spark)); spark.stop()"` и `docker compose exec jupyter jupyter nbconvert --to notebook --execute /opt/work/01_environment_and_smoke_test.ipynb --output-dir /tmp --output module1-validation-2.ipynb`.
- Зачем:
- нужно убрать устаревший учебный маршрут из student-facing документов, но сохранить старые лабораторные как reference-материал.
- Что:
- HOWTO.md перенесен в docs/archive/legacy_howto.md и помечен как архивный legacy-документ.
- README.md больше не отправляет студента в устаревший HOWTO и ссылается на актуальную программу курса.
- Проверка:
- просмотрен git diff -- README.md HOWTO.md docs/archive/legacy_howto.md.
- проверен git diff --cached --stat перед коммитом.
- Зачем:
- нужно выровнять учебную программу с PRD и явно отделить стартовый onboarding от практики в ноутбуках.
- Что:
- обновлены название курса и файл программы, а структура материалов пересобрана вокруг стартовой документации, 8 практических модулей и вспомогательных артефактов.
- добавлены трассировка Learning Outcomes, hands-on упражнение для модуля 2 и уточнения по доставке учебного data bundle.
- зафиксированы acceptance criteria, минимальный scope glossary и статус partitioning как legacy-темы вне обязательного трека v1.
- Проверка:
- просмотрен git diff HEAD~1 -- docs/course_prd.md docs/course_program.md.
- проверен git diff --cached --stat перед amend.
- Зачем:
- зафиксировать согласованную рамку курса по Lakehouse и сделать имя документа проще и единообразнее.
- Что:
- переработан PRD курса: уточнены ЦА, learning outcomes, scope, dataset strategy и out of scope.
- добавлены checkpoints, acceptance criteria и методические принципы курса.
- файл docs/PRD_Course.md переименован в docs/course_prd.md.
- Проверка:
- проверен итоговый diff и содержимое Markdown-документа; код и тесты не затрагивались.
- Зачем:
- Формализовать цели, аудиторию и структуру учебного курса для плавного погружения джунов в Lakehouse-архитектуру.
- Что:
- Создан docs/PRD_Course.md с описанием JTBD, "Aha-moments" и метрик успеха.
- Создан docs/COURSE_PLAN.md с детальной программой из 10 интерактивных уроков.
- Проверка:
- Файлы присутствуют в директории docs и корректно ссылаются друг на друга.