From 9d2222455a13216ba33eb4138945730244d32cdb Mon Sep 17 00:00:00 2001 From: embeddevio Date: Wed, 28 Oct 2026 21:58:23 +0300 Subject: [PATCH] =?UTF-8?q?docs(#21):=20VERIFICATION-21=20=E2=80=94=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=B0=D0=BA=D1=82=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B4=D0=BE=D0=B2=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20make=20?= =?UTF-8?q?=D0=B7=D0=B0=D1=84=D0=B8=D0=BA=D1=81=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=20=D0=B2=20=C2=A76.1,=20=D0=BF=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D0=B0=20=C2=A76.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ревью PR #53 (раунд 2) требовало явной фиксации «make → 2, контракт действует на уровне контейнера» и снятия неверного утверждения про прокидывание AWG_NS_EXEC_MODE. Прогоны раунда 3 добавляются отдельным коммитом. Refs #21 Refs #56 --- deploy/VERIFICATION-21.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/deploy/VERIFICATION-21.md b/deploy/VERIFICATION-21.md index 36d8433..6036225 100644 --- a/deploy/VERIFICATION-21.md +++ b/deploy/VERIFICATION-21.md @@ -5,6 +5,8 @@ ## 0. Стенд запускает именно то, что в ветке +Актуальные блобы для раунда 3 — в §7.3 (эта таблица фиксирует состояние раунда 2). + Каталог стенда `(/opt/awg-dash-dev/repo)` не является git-чекаутом (`git clone` по HTTP обрывается на этом Gitea — `fetch-pack: invalid index-pack output`), поэтому файлы сверены побайтово через git-blob-SHA с деревом HEAD: @@ -163,6 +165,12 @@ make test-netns # netns-харнесс сносит топологию с Коды возврата приведены к контракту `0/1/3/4` (`run.sh`, `topology.sh`): неожиданный код утилиты (255) нормализуется в `4` («ошибка стенда»), нет прав — `3`, упавшие тесты — `1`. +**Контракт действует на уровне контейнера, а не через make.** GNU make возвращает `2` +на любой упавший рецепт, поэтому `make test-netns-ci` при коде контейнера `3` или `4` +сам отдаёт `2` (в выводе остаётся только `make: *** [Makefile:…] Error 4`). Для CI #17 +добавлена точка входа без make — `bash tests/netns/ci.sh`: она запускает тот же контейнер +(`docker compose … run --rm -T netns`) и возвращает его код как есть. Проверено в §7.2. + ### 6.2 Реальные прогоны | прогон | команда | результат | @@ -193,7 +201,9 @@ make test-netns # netns-харнесс сносит топологию с каждая инварианта AC #21 ломается по отдельности (порт, тома, healthcheck, NET_ADMIN, `/dev/net/tun`, `ip_forward`, privileged netns-сервис, DEV-ONLY-метка, `--require-dockerfile`). * `deploy/api_stub.py` — `make_server()` выделен из `main()` (тесты поднимают сервер на порту 0). -* `make test-deploy` — гейт покрытия; `make test-netns-ci` прокидывает `AWG_NS_EXEC_MODE`. +* `make test-deploy` — гейт покрытия. Утверждение раунда 2 «`make test-netns-ci` прокидывает + `AWG_NS_EXEC_MODE`» было **неверным**: make-алиас `NETNS_EXEC_MODE ?= auto` перекрывал + переменную. Исправлено в §7.1 (проверено прогоном в §7.2). * `topology.sh`: снос топологии удаляет namespace'ы безусловно и до 5 раз проверяет результат — в контейнере `ip netns delete` иногда «терялся» и `run.sh` отдавал код 4 на зелёных тестах (флак 1 из 5 прогонов, после правки — 5/5 зелёных).