Sprint 0: каркас монорепозитория, ADR и линтеры #16

Closed
opened 2026-10-21 23:24:17 +03:00 by embeddevio · 1 comment
Owner

Owner: devops · Est: 3 SP · Priority: P0 · Sprint: 0 · Deps: —
Refs #15

Что сделать

  • Структура монорепо: agent/ (python: vpn, routing, geoip, dns, metrics), api/ (FastAPI), ui/ (React+TS), deploy/ (Dockerfile, compose, entrypoint), docs/adr/, tests/.
  • Зафиксировать ADR-001..008 из эпика #15 в docs/adr/NNN-*.md (язык backend, модульный монолит в одном образе, reconcile-модель, GeoIP-провайдер, DNS, хранилище, безопасность API/UI).
  • Инструменты: pre-commit (ruff, mypy, eslint, prettier), Makefile (make lint|test|run|build), .editorconfig, .gitignore, CODEOWNERS.

Acceptance criteria

  • GIVEN чистый клон репозитория, WHEN выполняю make lint и make test, THEN обе команды проходят на скелете без ручных установок вне venv.
  • GIVEN каталог docs/adr/, WHEN его открываю, THEN по каждому из 8 решений есть файл с контекстом/решением/последствиями.
  • GIVEN ветка feat/N-..., WHEN пушу, THEN pre-commit не блокирует валидный код и блокирует ошибки линта.

DoD

Тесты на новый код ≥ 70 %, CI green, PR с ревью владельца роли, без прямых пушей в main.

**Owner:** devops · **Est:** 3 SP · **Priority:** P0 · **Sprint:** 0 · **Deps:** — Refs #15 ### Что сделать - Структура монорепо: `agent/` (python: vpn, routing, geoip, dns, metrics), `api/` (FastAPI), `ui/` (React+TS), `deploy/` (Dockerfile, compose, entrypoint), `docs/adr/`, `tests/`. - Зафиксировать ADR-001..008 из эпика #15 в `docs/adr/NNN-*.md` (язык backend, модульный монолит в одном образе, reconcile-модель, GeoIP-провайдер, DNS, хранилище, безопасность API/UI). - Инструменты: pre-commit (ruff, mypy, eslint, prettier), `Makefile` (`make lint|test|run|build`), `.editorconfig`, `.gitignore`, `CODEOWNERS`. ### Acceptance criteria - GIVEN чистый клон репозитория, WHEN выполняю `make lint` и `make test`, THEN обе команды проходят на скелете без ручных установок вне venv. - GIVEN каталог `docs/adr/`, WHEN его открываю, THEN по каждому из 8 решений есть файл с контекстом/решением/последствиями. - GIVEN ветка `feat/N-...`, WHEN пушу, THEN pre-commit не блокирует валидный код и блокирует ошибки линта. ### DoD Тесты на новый код ≥ 70 %, CI green, PR с ревью владельца роли, без прямых пушей в `main`.
embeddevio added this to the Sprint 0 — Фундамент: монорепо, CI, Docker-образ milestone 2026-10-21 23:24:17 +03:00
embeddevio added the devopsstatus/ready labels 2026-10-21 23:24:17 +03:00
Author
Owner

TechLead: задача выполнена в ветке feat/16-repo-skeleton, PR #47 (26 файлов, база main). Статус → status/review.

Проверено на содержимом ветки (файлы получены через Gitea MCP, размеры и blob-sha совпадают с деревом ветки; прогон в отдельном venv Python 3.13):

Гейт Инструмент Результат
Линт ruff 0.17.1 All checks passed! (rc=0)
Типы mypy (strict, 3 файла) Success: no issues found (rc=0)
Тесты pytest + pytest-cov 2 passed, coverage 100 % (порог 70 % пройден, rc=0)
shell sh -n / dash -n (для entrypoint из #18) OK

Не проверено: CI-пайплайн (#17) и security-скан (#44) ещё не существуют; ревью владельца роли — за devops.

Артефакты: README, Makefile, pyproject (ruff/mypy/pytest с --cov-fail-under=70), requirements, pre-commit, backend/awg_agent, backend/awg_api, backend/tests/test_skeleton.py, docs/adr/000-template + 001…008, карты задач в ui/README.md, deploy/README.md, tests/netns/README.md.

**TechLead:** задача выполнена в ветке `feat/16-repo-skeleton`, PR **#47** (26 файлов, база `main`). Статус → `status/review`. **Проверено на содержимом ветки** (файлы получены через Gitea MCP, размеры и blob-sha совпадают с деревом ветки; прогон в отдельном venv Python 3.13): | Гейт | Инструмент | Результат | |---|---|---| | Линт | ruff 0.17.1 | `All checks passed!` (rc=0) | | Типы | mypy (strict, 3 файла) | `Success: no issues found` (rc=0) | | Тесты | pytest + pytest-cov | `2 passed`, coverage **100 %** (порог 70 % пройден, rc=0) | | shell | `sh -n` / `dash -n` (для entrypoint из #18) | OK | **Не проверено:** CI-пайплайн (#17) и security-скан (#44) ещё не существуют; ревью владельца роли — за devops. **Артефакты:** README, Makefile, pyproject (ruff/mypy/pytest с `--cov-fail-under=70`), requirements, pre-commit, `backend/awg_agent`, `backend/awg_api`, `backend/tests/test_skeleton.py`, `docs/adr/000-template + 001…008`, карты задач в `ui/README.md`, `deploy/README.md`, `tests/netns/README.md`.
embeddevio added status/review and removed status/ready labels 2026-10-21 23:31:40 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: embeddevio/awg-dash#16