# Передача состояния: как продолжить работу в новом чате Этот файл заменяет переписку. Он написан для того, чтобы новый чат начинался с одного сообщения и не требовал пересказа истории. ## Первое сообщение в новом чате > Репозиторий `C:\Users\Ochenstarik\Agent_projects\server-monitor-manager`, > GitHub `ochenstarik-ui/server-monitor-manager`. > Прочитай `agents/README.md` и `agents/claude/notes/2026-08-18-передача-состояния.md`, > сверь состояние с GitHub и продолжай как главный агент: проверяешь работу > Codex и Antigravity, пишешь им задания, мержишь и выпускаешь релизы. Больше ничего пересказывать не нужно: доска, задания, отчёты и архив лежат в репозитории. ## Где что лежит | Что | Где | |---|---| | Правила работы агентов | `agents/README.md` | | Задания агенту | `agents//inbox/` | | Отчёты агента | `agents//done/` | | Принятые пары «задание — отчёт» | `agents/_accepted/ГГГГ-ММ-ДД-имя/` | | Доска состояния (прежний формат) | `agents/_salvage-2026-08-18/smm-deliverables/README.md` | | Архив закрытых заданий | `agents/_salvage-2026-08-18/smm-deliverables/Старые задачи/` | | Инструкция владельцу по серверам | `agents/_salvage-2026-08-18/smm-deliverables/smm-cleanup-and-install-2026-08-15.md` | Доску стоит перенести из `_salvage` в постоянное место — она живая, а не архив. ## Состояние на 2026-08-18 - `main` — `f8e751c`, слит PR #62 `codex/release-alpha20`; - последний релиз — `v0.1.0-alpha.20`; - открыты: PR #63 `antigravity/console-links` (управление Links в консоли), PR #64 `chore/agents-workspace` (эта самая схема папок), плюс dependabot; - ветка `claude/deps-update` содержит незакоммиченные правки двух workflow и два новых задания в `agents/claude/inbox/`. ### Сожжённые номера версий `alpha.10`, `alpha.11`, `alpha.19` — теги созданы, `Release pipeline` упал, релизы не опубликованы, номера не переиспользуются. `alpha.19` сожжён при мне и по процедурной дыре, а не по вине исполнителя: шаг `Package bootstrap` сверяет `DEFAULT_RELEASE_TAG` в `deploy/smm-setup.sh` с выпускаемым тегом, но весь блок закрыт условием `refs/tags/*`, поэтому репетиция через `workflow_dispatch` идёт по `refs/heads/main` и эту сверку пропускает. Репетиция была зелёной, тег упал. **Вывод, который дороже самого случая:** репетиция, не покрывающая шаги, исполняемые только на теге, не является репетицией. Проверять это до следующего выпуска. ## Рабочие соглашения Выведены из происшествий, а не из общих соображений. 1. **Задание содержит только предстоящую работу.** Файлы, начинавшиеся с описания уже сделанного, исполнитель принимал за отчёт о выполнении: Codex ответил «задание уже выполнено, PR #58» вместо работы над невыполненной частью. Сделанное живёт на доске, а не в задании. 2. **Отчёт — раздел в описании PR.** Отдельный файл с отчётом результатом не является. Antigravity однажды сдал только такой файл, не создав ни ветки, ни PR. 3. **Проверять по репозиторию, а не по отчёту.** Смотреть диф от базы слияния, а не от `main`: отставшая ветка в обычном дифе выглядит так, будто удаляет чужую работу. 4. **Критерий приёмки должен быть достижим.** «Проверка запустилась автоматически» была недостижима: событие от `GITHUB_TOKEN` не запускает другие workflow. Это дефект задания, а не исполнителя. 5. **Границы областей прописывать явно.** Codex — `deploy/**`, релизный пайплайн, проверка релиза. Antigravity — `src/**`, консоль, тесты Control и Desktop. Пересечение областей ломает параллельную работу. 6. **Зелёный CI не означает работающую машину.** Так найдены: отсутствующий cosign, права на каталог mesh, отдача ассетов из ресурсов сборки. Каждый раз тест подставлял временный путь и проходил, а на сервере отказывало. 7. **Команды владельцу помечать, где выполнять**: 🖥 на Windows, 🐧 на сервере. Путаница машин стоила нескольких заходов. 8. **Долгие загрузки — с индикатором.** Молчащий `curl -fsSL` на 24 МБ дважды принят за зависание и прерван. ## Живая установка Проверено на настоящих машинах, а не в CI. - **Hub** `178.212.13.102` (`host1885995-3.hostland.pro`), Ubuntu 24.04 x86_64, поставлен из `v0.1.0-alpha.14`; - отпечаток CA: `EB:05:E5:16:42:EE:97:28:C2:E9:EA:6F:3E:48:3C:0C:1C:1E:02:E0:ED:9B:AF:7B:BF:24:2C:19:D4:4B:11:C4`; - публичный ключ WireGuard Hub: `AjN8XwPB11bRQa0fO5ljPlAWc0FxU+fxbeUT8AZczHk=`; - **Node `ai-agent`** — `vm1957808.vds.chsl.one`, адрес `10.77.0.2`, mesh собран, ping 7.6 мс. На этой машине работает 3x-ui и он не пострадал; - свободных серверов больше нет. `tests/acceptance/three-server-mesh.sh` требует Hub и три узла: источник и две цели, потому что смысл проверки в том, что к одной цели доступ по Link открыт, а ко второй закрыт. На двух машинах это не проверить; - WSL под узлы не годится: все дистрибутивы WSL2 делят один сетевой стек, два `smm0` с разными адресами не поднять. Проверено экспериментом. **Физическая приёмка — единственный пункт Горизонта 0, не закрываемый кодом.** ## Что важно знать про продукт - подпись релиза проверяется настоящим материалом с обеих сторон: установкой на чистый runner (Linux) и `UpdateService` (Windows), автоматически на каждом релизе; - проверка подписи требует исходящего доступа к службам sigstore; в закрытом контуре установка зависнет; - таблица nftables `inet ochenstarik_smm` цепляется только к хуку `forward` и только к трафику `smm0 → smm0`. Хука `input` в ней нет, политика `accept`. Поэтому установка на сервер с 3x-ui безопасна — проверено на живой машине; - опубликованный тег неизменяем, ассеты не заменяются: исправление выпускается следующим номером.