# 03-Acceptance Criteria — ORCH-080 Work Item ID: ORCH-080 Каждый критерий имеет явное условие PASS/FAIL. ## AC-1 — `disable_web_page_preview` в payload `sendMessage` - **PASS:** JSON-payload вызова `httpx.post(.../sendMessage)` в `send_telegram()` содержит ключ `"disable_web_page_preview"` со значением `True`. - **FAIL:** ключ отсутствует или `False`. - **Проверка:** unit-тест (мок `httpx`) инспектирует `httpx.post.call_args.kwargs["json"]`. ## AC-2 — `disable_web_page_preview` в payload `editMessageText` - **PASS:** JSON-payload вызова `httpx.post(.../editMessageText)` в `edit_telegram()` содержит ключ `"disable_web_page_preview"` со значением `True`. - **FAIL:** ключ отсутствует или `False`. - **Проверка:** unit-тест (мок `httpx`) инспектирует `httpx.post.call_args.kwargs["json"]`. ## AC-3 — баннер link-preview Plane исчез в карточке трекера - **PASS:** в реальном чате Telegram карточка трекера задачи (режимы `bump` и `edit`) больше не показывает баннер «Plane — Modern project management». - **FAIL:** баннер всё ещё разворачивается. - **Проверка:** ручная верификация на staging (8501) после деплоя — наблюдение карточки в Telegram. Автоматически косвенно покрыто AC-1/AC-2 (payload содержит флаг). ## AC-4 — ссылка на задачу остаётся кликабельной - **PASS:** в карточке/уведомлениях номер задачи `ORCH-NNN` остаётся кликабельной ссылкой `` на issue в Plane; `parse_mode: "HTML"` сохранён в обоих payload. - **FAIL:** `parse_mode` изменён/удалён, либо ссылка перестала рендериться как ``. - **Проверка:** unit-тест проверяет, что `"parse_mode": "HTML"` присутствует в обоих payload; существующие тесты ссылок (`test_notify_issue_links.py`) остаются зелёными. ## AC-5 — сохранены существующие поля payload - **PASS:** `send_telegram` payload по-прежнему содержит `chat_id`, `text`, `parse_mode`, `disable_notification`; `edit_telegram` payload — `chat_id`, `message_id`, `text`, `parse_mode`. Возвращаемые значения функций не изменились (`send_telegram → message_id|None`, `edit_telegram → EDIT_*`). - **FAIL:** любое из перечисленных полей удалено/переименовано, либо изменился контракт возврата. - **Проверка:** unit-тесты payload + существующие тесты трекера/классификации исходов. ## AC-6 — never-raise сохранён, pytest зелёный - **PASS:** при сетевой/HTTP-ошибке `send_telegram`/`edit_telegram` не бросают исключение (возврат `None`/`EDIT_FAILED`); вся сюита `pytest tests/ -q` зелёная. - **FAIL:** любое исключение наружу или красный pytest. - **Проверка:** существующие тесты never-raise (`test_resilience.py`, `test_telegram_tracker.py`) + полный прогон. ## AC-7 — документация обновлена в том же PR - **PASS:** `CHANGELOG.md` содержит запись об ORCH-080; при необходимости — короткая ремарка в `CLAUDE.md`/`docs/architecture/README.md` о подавлении link-preview. - **FAIL:** функционал изменён, документация не обновлена (Reviewer → REQUEST_CHANGES).