Sprint 0 / #16: каркас монорепозитория, ADR-001..008 и линтеры #47

Merged
embeddevio merged 6 commits from feat/16-repo-skeleton into main 2026-10-28 21:16:03 +03:00
Owner

Closes #16 (частично — задача закрывается после зелёных гейтов). Refs #15.

Что сделано

Каркас монорепозитория awg-dash:

  • README.md — продукт, архитектура (agent/api в одном образе), быстрый старт, структура, процесс разработки;
  • Makefile — venv / lint / fmt / test / build / dev-up / dev-logs / test-netns (две последние честно указывают на ещё не созданные артефакты #18/#21);
  • pyproject.toml — ruff (E,F,W,I,N,UP,B,ASYNC,S,RUF), mypy strict для backend/, pytest с порогом покрытия --cov-fail-under=70;
  • requirements.txt / requirements-dev.txt — рантайм (fastapi, uvicorn, pydantic, aiosqlite, httpx, structlog, prometheus-client) и dev-инструменты;
  • .pre-commit-config.yaml, .editorconfig, .gitignore;
  • backend/awg_agent/ и backend/awg_api/ — пакеты с картой модулей (что в каком issue реализуется) и скелетным тестом;
  • backend/tests/test_skeleton.py;
  • docs/adr/ — индекс, шаблон и ADR-001…008 (решения из эпика #15, включая отклонённую альтернативу микросервисам и обоснование Python/FastAPI против Go);
  • ui/README.md, deploy/README.md, tests/netns/README.md — карта будущих задач со ссылками на issues.

Что НЕ входит

  • CI (#17) и Dockerfile (#18) — отдельные задачи; make build/make dev-up пока падают с явным указанием задачи.
  • CODEOWNERS и issue/PR-шаблоны не дублируются — они приходят в существующем PR #1.

Гейты

  • CI green — pipeline появится в #17
  • Покрытие: порог ≥70% включён в конфиг pytest (--cov-fail-under=70), стартовые тесты покрывают оба пакета
  • Security scan — часть #17/#44
  • Ревью владельца роли

Проверка

Ветка: feat/16-repo-skeleton, 4 коммита (37 записей в дереве). Все правки — через Gitea MCP.

Closes #16 (частично — задача закрывается после зелёных гейтов). Refs #15. ## Что сделано Каркас монорепозитория awg-dash: - **README.md** — продукт, архитектура (agent/api в одном образе), быстрый старт, структура, процесс разработки; - **Makefile** — `venv / lint / fmt / test / build / dev-up / dev-logs / test-netns` (две последние честно указывают на ещё не созданные артефакты #18/#21); - **pyproject.toml** — ruff (E,F,W,I,N,UP,B,ASYNC,S,RUF), mypy strict для `backend/`, pytest с порогом покрытия `--cov-fail-under=70`; - **requirements.txt / requirements-dev.txt** — рантайм (fastapi, uvicorn, pydantic, aiosqlite, httpx, structlog, prometheus-client) и dev-инструменты; - **.pre-commit-config.yaml**, **.editorconfig**, **.gitignore**; - **backend/awg_agent/** и **backend/awg_api/** — пакеты с картой модулей (что в каком issue реализуется) и скелетным тестом; - **backend/tests/test_skeleton.py**; - **docs/adr/** — индекс, шаблон и **ADR-001…008** (решения из эпика #15, включая отклонённую альтернативу микросервисам и обоснование Python/FastAPI против Go); - **ui/README.md**, **deploy/README.md**, **tests/netns/README.md** — карта будущих задач со ссылками на issues. ## Что НЕ входит - CI (#17) и Dockerfile (#18) — отдельные задачи; `make build`/`make dev-up` пока падают с явным указанием задачи. - CODEOWNERS и issue/PR-шаблоны не дублируются — они приходят в существующем PR #1. ## Гейты - [ ] CI green — pipeline появится в #17 - [x] Покрытие: порог ≥70% включён в конфиг pytest (`--cov-fail-under=70`), стартовые тесты покрывают оба пакета - [ ] Security scan — часть #17/#44 - [ ] Ревью владельца роли ## Проверка Ветка: `feat/16-repo-skeleton`, 4 коммита (37 записей в дереве). Все правки — через Gitea MCP.
embeddevio added the devops label 2026-10-21 23:29:50 +03:00
embeddevio added 6 commits 2026-10-21 23:29:51 +03:00
Author
Owner

TechLead — review + gates перед мержем (28.10, 21:1x).

Так как Gitea Actions runner'а нет (#52), CI-гейт заменён ручной проверкой на тех же байтах, что лежат в ветке (feat/16-repo-skeleton, HEAD 1db3824c): все проверенные файлы взяты через Gitea MCP и сверены по git-blob SHA.

Прогон (Python 3.13.5, ruff 0.17.3, mypy 1.19, pytest 9.2.0, venv):

ruff check backend           -> All checks passed!               (rc=0)
ruff format --check backend  -> 2 files already formatted        (rc=0)
mypy backend                 -> Success: no issues in 3 files    (rc=0)
pytest (pyproject addopts)   -> 2 passed, coverage 100 % (порог 70) (rc=0)

Дополнительно проверено: pyproject.toml парсится как TOML (python tomllib), конфиги ruff/mypy/pytest ожидаемые (select=[E,F,W,I,N,UP,B,ASYNC,S,RUF], ignore=[S101], mypy strict на backend, --cov-fail-under=70), все 9 Makefile-таргетов (venv lint fmt test build dev-up dev-down dev-logs test-netns) разрешаются в make -n (rc=0). Содержимое — только конфиги, ADR, README и два пакета-заглушки; исполняемого кода, способного сломать main, нет.

Отклонение от DoD (фиксирую явно): CI green недостижим — runner не зарегистрирован (#52), поэтому мержу по ручным гейтам + ревью TechLead. Пункт «CI green» остаётся открытым для #17 и будет закрыт после runner'а; security-скан (bandit/pip-audit/trivy) — тоже из #17/#44 (в этом PR нет исполняемого кода).

**TechLead — review + gates перед мержем (28.10, 21:1x).** Так как Gitea Actions runner'а нет (#52), CI-гейт заменён ручной проверкой **на тех же байтах, что лежат в ветке** (`feat/16-repo-skeleton`, HEAD `1db3824c`): все проверенные файлы взяты через Gitea MCP и сверены по git-blob SHA. Прогон (Python 3.13.5, ruff 0.17.3, mypy 1.19, pytest 9.2.0, venv): ``` ruff check backend -> All checks passed! (rc=0) ruff format --check backend -> 2 files already formatted (rc=0) mypy backend -> Success: no issues in 3 files (rc=0) pytest (pyproject addopts) -> 2 passed, coverage 100 % (порог 70) (rc=0) ``` Дополнительно проверено: `pyproject.toml` парсится как TOML (python `tomllib`), конфиги ruff/mypy/pytest ожидаемые (`select=[E,F,W,I,N,UP,B,ASYNC,S,RUF]`, `ignore=[S101]`, mypy strict на `backend`, `--cov-fail-under=70`), все 9 Makefile-таргетов (`venv lint fmt test build dev-up dev-down dev-logs test-netns`) разрешаются в `make -n` (rc=0). Содержимое — только конфиги, ADR, README и два пакета-заглушки; исполняемого кода, способного сломать `main`, нет. **Отклонение от DoD (фиксирую явно):** CI green недостижим — runner не зарегистрирован (#52), поэтому мержу по ручным гейтам + ревью TechLead. Пункт «CI green» остаётся открытым для #17 и будет закрыт после runner'а; security-скан (`bandit`/`pip-audit`/`trivy`) — тоже из #17/#44 (в этом PR нет исполняемого кода).
embeddevio merged commit 063ecf18ce into main 2026-10-28 21:16:03 +03:00
Sign in to join this conversation.