Итерация 0 закрыта: от спеки до «Привет» в боте

от автора

Короткий апдейт. Первая статья была про спеку и архитектуру до первой строчки кода — вот что произошло дальше.

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

Что сделал агент, прежде чем писать код

Я написал «что дальше?» — и агент сам прочитал спеку, roadmap и GitHub Issues, сформулировал план итерации 0 и перешёл в режим реализации. Без «какой фреймворк выбрать?» и «куда класть файлы?»: он знал ответы, потому что они были в SPEC.md и vibepp.yaml.

агент перечисляет шаги iter-0 из спеки

агент перечисляет шаги iter-0 из спеки

Примерно через 30 минут: docker compose up --build, 17 шагов сборки, все сервисы поднялись.

docker compose up --build, все 6/6 сервисов запущены, код в панели

docker compose up —build, все 6/6 сервисов запущены, код в панели

Затем я поднял ngrok, зарегистрировал вебхук через npm run max:subscribe (скрипт, который агент написал чуть позже) — и нажал «Старт» в боте.

ngrok, POST /webhook 200 OK

ngrok, POST /webhook 200 OK
чат в MAX: «Привет!» в 04:42

чат в MAX: «Привет!» в 04:42

Мелочь, которую я чуть не пропустил

Pre-commit хук check-spec сработал ещё раньше — при коммите скрипта регистрации вебхука агент увидел в терминале INV=11, events=11, iterations=8 — OK и спокойно продолжил. Я не обращал внимания, пока специально не проверил.

check-spec в терминале, тест 1 passed

check-spec в терминале, тест 1 passed

Это именно то, ради чего мы писали скрипты check-spec.mjs и check-git-policy.mjs — агент сам проверяет, что не сломал инварианты спеки перед каждым коммитом.

Issue закрыт, PR смерджен

GitHub Issue #1 Closed, все чекбоксы отмечены, Milestone «Iteration 0 — Скелет»

GitHub Issue #1 Closed, все чекбоксы отмечены, Milestone «Iteration 0 — Скелет»
PR #10 Merged, feat/iter-0 → main, 36 файлов, +3372 строки

PR #10 Merged, feat/iter-0 → main, 36 файлов, +3372 строки

Следующая итерация — Event Core: полный контракт событий по vibepp, идемпотентность по max_update_id, property-based тесты на инварианты. Ветка feat/iter-1.

Репозиторий: github.com/Quantum-Insight-Lab/aeon_map_system

Первая статья (архитектура, event sourcing, зачем 700-строчный YAML): https://habr.com/ru/articles/1027210/

ссылка на оригинал статьи https://habr.com/ru/articles/1027996/