# 13 — ПРОТОКОЛ КОНТУРА Актуализирован 2026-09-07 · действует для любого провайдера и человека-воркера Эти правила — контракт доказательств и полномочий. Модель не расширяет доступ. ## 0. Порядок источников правды 1. `/passport/` и `CANON.json` — собранное, роли машин, протокол. 2. Свежий `OPS-STATUS-LIVE` в ноутбуке владельца — оперативная обстановка. 3. `waves/queue/L113X-RELEASE-RECEIPT.md` и SHA-addendum — состав/посадка линии. 4. Доска `bugs.wool2.online` — тикеты и их полный trail. Противоречие не разрешается памятью. Зафиксируй его и спроси координатора. ## 1. Точная база и своё дерево Воркер получает полный SHA базы живой линии и создаёт собственный detached worktree. Основной репозиторий не переключает, чужие worktree не мутирует. Floating `main`, origin и локальное имя ветки не доказывают базу. ## 2. Бриф самодостаточен Имя: `NNNN--brief.md`. В шапке обязательно: ```text DISPATCH: MODEL= EFFORT= ``` Бриф содержит «ДЛЯ НУЛЕВОГО АГЕНТА», эволюцию решения, точные base/SHA и allowed paths, запреты, команды проверки, real-PG gate, outputs, `KNOWN ISSUES` и `ТРАБЛШУТИНГ`. ## 3. Тихий успех запрещён Не найден обязательный вход — ошибка или `INPUT_GAP`, не fallback к старому факту. API, принявший неизвестные поля, не считается успешным. `ok:true`, commit, `_DONE`, board status и зелёный unit test не заменяют проверку эффекта. ## 4. Каноническая сдача - `-REPORT.md`, первая строка `VERDICT: GO|NO-GO|INPUT_GAP`; - `_DONE` после всех обязательных outputs/checks; - commit и bundle `HEAD ^<точный-base-sha>`; - base/head, changed paths, тесты, реальные входы, gaps и риски в отчёте. Сдача patch-файлом допустима только если бриф так требует; канон линии — exact-base bundle. ## 5. Независимая приёмка Работу принимает **другой verifier** на точном candidate. DB-sensitive изменение обязательно проверяется на реальном PostgreSQL, не только mock/SQLite. Verifier воспроизводит happy path, deny/abuse path, retry/replay и пишет собственный verdict. Самопроверка полезна, но не является независимой приёмкой. ## 6. Посадка линии Посадка разрешена только для принятых commits, являющихся предками базы живой линии, с полным trail. ```text A2 l113Xchain.sh → tar + att-build (ephemeral key) → activation, подписанная owner-key на ноутбуке владельца → A1 land-l113X.sh unpack→env→dryrun(:3011 paid enforce_ready)→migrate →flip(upstream-controller --await)→verify → hetzbk artifact+env-pack → Pi standby → L113X-RELEASE-RECEIPT на A1/A2/M4 → prod post-QA + батарея ролей ``` Один оператор-координатор владеет landing/flip/rollback. Имя посадки равно basename артефакта; activation, `att-build`, release id и migration digest обязаны совпасть. ## 7. Post-QA и статус После flip проверяются оба A1 backend (`:3010/:3012`), edge, production domains, `/login`, ready/paid, канонический Telegram webhook `/api/messenger/v1/telegram/webhook`, журнальные ошибки и role battery. Цель батареи — 50/50. Статусы различаются: **candidate → accepted → landed → post-QA green**. Перепрыгивать стадии нельзя. Статус меняется только с полным trail. ## 8. Запреты и restricted zones - `.env` не читать. - Prod/SSH/migrate/flip/host-sync — только через координатора в рамках явного полномочия. - VOICE/SIP/native/gateway — restricted; host-sync только координатором. - FC-DR — parked. - Не удалять чужие деревья, кэши, симуляторы или артефакты. - Не писать в owner data и не повышать права QA-аккаунтов. - Не скрывать ошибку пустым `catch`; пользовательская ошибка оставляет диагностический след без секретов. ## 9. Деньги и безопасность Money/security изменения fail closed. Overdraft следует owner-правилу «Б» (только ранее пополнявшим). Ручные гранты — только admin API. Astra выдаёт security-брифы, координатор релеет их, closure выполняется на живой линии с независимой приёмкой и post-QA. ## 10. Модели и роли - Codex luna — рабочая лошадка. - Codex sol — сложное. - gpt-6-astra — security lead. - claude-opus/fable — координатор и хрупкие операции. ## 11. Коммуникация владельцу Канал владельца — Telegram. Формат: короткие русские тезисы, UTC, line/full SHA, доказанное состояние, риск и одно точное требуемое решение. Нельзя сообщать «готово», если отсутствует ancestry/receipt/post-QA trail. ## 12. Траблшутинг - Worktree не на базе: остановиться, сохранить diff, пересоздать от точного SHA; не rebase вслепую. - В M4 нет новой линии: запросить bundle/branch update у координатора; M4 сам линии не получает. - Миграции расходятся: сравнить sanitized names/status на real PG с artifact manifest; не угадывать по count. - Вебхук «не тот»: использовать `/api/messenger/v1/telegram/webhook`, `{}` ожидаемо даёт 401. - Role battery упала: опубликовать cases/artifact и причину; не объявлять post-QA green до решения или rollback.