diff --git a/fix29.txt b/fix29.txt deleted file mode 100644 index bc3dfa1..0000000 --- a/fix29.txt +++ /dev/null @@ -1,109 +0,0 @@ -Изучил архив. Мой вывод: старый `Amnezia limits (old bash)/` можно убирать из проекта, но вместе с ним нужно зачистить документацию и закрыть один процессный пробел: rollback больше не должен ссылаться на `amnezia-tc.service`. - -По текущему дереву Rust-код уже не зависит от старой bash-папки. `traffic_core` сам делает discovery контейнера/interface/peers, строит egress + IFB ingress `tc` topology, проверяет drift, восстанавливает state, ведёт status. Отдельно есть nftables host firewall, anti-torrent guard, swap reconciler и reboot scheduler. Старая папка сейчас является только историческим reference. - -Главные места, которые конфликтуют с твоей новой моделью: - -`tools/build.sh` сейчас принимает `debian|ubuntu`. Это надо заменить на строгий `Debian 13 amd64`. Иначе у тебя документация будет говорить “только Debian 13”, а build-helper фактически разрешит Ubuntu. - -`tools/README.md` пишет “Debian/Ubuntu с apt”. Нужно заменить на “Debian 13 amd64”. - -Корневой `README.md` содержит `Amnezia limits (old bash)` в дереве репозитория и отдельный абзац про historical reference. Это надо удалить. Там же строка про upstream Amnezia с Debian 12/13 и Ubuntu 22.04/24.04 лучше убрать полностью или переписать так, чтобы было ясно: AWG2 Harness поддерживает только Debian 13 amd64, независимо от того, что поддерживает Amnezia upstream. - -`docs/OLD_BASH_BEHAVIOR.md` и `docs/MIGRATION.md` логично удалить. Сейчас они попадут в `.deb`, потому что `tools/build.sh` пакует все `docs/*.md`. - -`docs/README.md` надо очистить от ссылок на `OLD_BASH_BEHAVIOR.md` и `MIGRATION.md`. - -`docs/ACCEPTANCE_CHECKLIST.md` содержит rollback через старые bash-файлы и `amnezia-tc.service` / `amnezia-tc-watcher.service`. Это больше нельзя оставлять. Нужен Rust-native rollback: остановить сервисы, отключить host firewall / anti-torrent, удалить AWG2-owned `tc` topology и при необходимости удалить пакет. - -В `docs/IMPLEMENTATION_SPEC.md`, `docs/CONFIGURATION.md`, `docs/ANTI_TORRENT.md` нужно не удалять смысл, а переименовать происхождение. Например “bash parity” заменить на “class-id stability contract”. Лексикографическую сортировку peer IP я бы оставил: код уже сортирует IP как строки, и это полезно как стабильный ABI для class id. Просто больше не надо объяснять это через старый bash. - -Минимальный список удаления: - -```text -Amnezia limits (old bash)/ -docs/OLD_BASH_BEHAVIOR.md -docs/MIGRATION.md -``` - -Что я бы добавил до удаления старого rollback: - -```text -awg2-harness cleanup-limits -``` - -или хотя бы документированную процедуру: - -```bash -systemctl disable --now awg2-harness.service -systemctl disable --now awg2-reboot-scheduler.service - -C="$(docker ps --format '{{.Names}}' | grep -E '^(amnezia-awg2|amnezia-awg)$' | head -n1)" -PID="$(docker inspect -f '{{.State.Pid}}' "$C")" - -nsenter -t "$PID" -n -- tc qdisc del dev awg0 root 2>/dev/null || true -nsenter -t "$PID" -n -- tc qdisc del dev awg0 ingress 2>/dev/null || true -nsenter -t "$PID" -n -- ip link del ifb0 2>/dev/null || true -``` - -Для Debian 13-only модели я бы сделал три уровня защиты. - -Первый — `tools/build.sh`: запретить всё кроме Debian 13 amd64. - -```bash -ensure_supported_host() { - if [[ ! -f /etc/os-release ]]; then - echo "Unsupported OS: missing /etc/os-release. Only Debian 13 amd64 is supported." - exit 1 - fi - - # shellcheck disable=SC1091 - source /etc/os-release - - if [[ "${ID:-}" != "debian" || "${VERSION_ID:-}" != "13" ]]; then - echo "Unsupported OS: ${PRETTY_NAME:-unknown}. Only Debian 13 amd64 is supported." - exit 1 - fi - - local arch - arch="$(dpkg --print-architecture 2>/dev/null || uname -m)" - if [[ "$arch" != "amd64" && "$arch" != "x86_64" ]]; then - echo "Unsupported arch: $arch. Only amd64 is supported." - exit 1 - fi -} -``` - -Второй — `.deb preinst`, чтобы пакет не ставился на Ubuntu/Debian 12/Debian 14 случайно. - -```sh -#!/bin/sh -set -e - -if [ ! -r /etc/os-release ]; then - echo "awg2-harness supports only Debian 13 amd64" >&2 - exit 1 -fi - -. /etc/os-release - -if [ "${ID:-}" != "debian" ] || [ "${VERSION_ID:-}" != "13" ]; then - echo "awg2-harness supports only Debian 13 amd64; got ${PRETTY_NAME:-unknown}" >&2 - exit 1 -fi - -if command -v dpkg >/dev/null 2>&1; then - arch="$(dpkg --print-architecture)" - if [ "$arch" != "amd64" ]; then - echo "awg2-harness supports only amd64; got $arch" >&2 - exit 1 - fi -fi - -exit 0 -``` - -Третий — `validate-runtime` в Rust: проверять `/etc/os-release` и arch, чтобы ручной запуск бинаря вне `.deb` тоже явно падал. - -Ещё один важный несостык: документация использует версию `0.1.6`, а `traffic_core/Cargo.toml` сейчас `0.1.4`. Если релиз реально `0.1.6`, лучше поднять crate version, а не жить на постоянном `--version` override. -Версия реально 0.1.6 \ No newline at end of file