# QA (самопроверка) — LIN-DIRECT-01, редакция 2 ## Предупреждение и ограничения самопроверки **УЧЕБНЫЙ ЧЕРНОВИК — НЕ ДЛЯ ИМПОРТА И ЗАПУСКА** Редакция: 2. Источник изменения: `input/change-r2.json` (`revision: 2`, «Во второй редакции оставляем аудит и учебные сессии»). Это самопроверка модели, а не независимое одобрение и не разрешение на импорт или запуск. Проверка файлов не доказывает отсутствие исторических сетевых или кабинетных действий; независимый аудит истории инструментов не заявляется. ## Источники и SHA-256 | Файл | SHA-256 | |---|---| | README.md | 8814ebb98b04e7811b79afe35e95a22076902208d7d8971439b874df3184b625 | | OUTPUT-CONTRACT.json | 31f5149ad5aa0e83e46755372bff671e88d8fc69d343a68a6cb05035706331cb | | input/company.json | 57efa0b28b8aded823383c7aa7b844a6a32b0385e25074a87251594c315c584e | | input/queries.csv | 276f8f871e24229444c04e353f2627666a280a71d6933d2e56c49ab3ecd153c5 | | input/format-limits.json | c7fb009573273297ef623e1da81cd3076f70451da02c7361bd615cdfa3804116 | | input/change-r2.json | af92217c3f229a51f5a0097e792a807617f460e54fc1562e7298d5638e647197 | Хеши пяти исходных файлов совпадают со снятыми в базовом проходе; `output/base/*` (включая `qa.md`, SHA-256 2509dec2…6f6e49) совпадают с состоянием до r2 — изменений нет. ## Результаты и SHA-256 | Файл | SHA-256 | |---|---| | query-plan.csv | 2887a4a81d96677a51b9ff032ebc93eae56c8d1b70bd44c86734e9a1a073e8ad | | ads.csv | bc002c281a1820ec8ebf634e5386ee4de8e6bc516af74707dfb609b0f56ab96f | | negative-candidates.csv | 9f3e76861bd660249856f1763024fdf26347053bdf7e32ef0bebc6a45abbeb84 | | utm-map.csv | cf0b5f75b06834a6b2ec04fb68a19b481dacb1e82efbb2a47977c84cb35af109 | | launch-checklist.md | 4b463089251ffcbdb32445c34421f26f8e88443cb6da51157c916424f79578fc | `qa.md` не хешируется внутри себя. ## Классификация и группы Количества: запросов 8; include 2 (Q01, Q02); exclude 6 (Q03–Q08); групп 1 (G01); объявлений 2; строк UTM 2; строк минус-кандидатов 6. Все `is_synthetic=true`; `query_id` и `query` совпадают с `input/queries.csv` (проверено программно, порядок сохранён). ID согласованы между `query-plan`, `ads` и `utm-map`. Что изменилось относительно base: Q03 (регламент) и Q04 (описание процессов) переведены include → exclude, так как `regulations.quantity` = 0 и эти услуги по `effective_offer_rule` не предлагаются. Группы G02 и G03 удалены, их числа не переносились. G01 сохранена. Сессии отдельной группы не получили: запросов на них в `queries.csv` нет, спрос не выдумывался. ## Факты и ограничения объявлений Способ подсчёта: Unicode code points, включая пробелы и знаки препинания; слова — по пробелам; пунктуация — символы категории P. Лимиты: заголовок ≤56 / слово ≤22; текст ≤81 / пунктуация ≤15 / слово ≤23. | ad_id | Заголовок: длина / макс. слово / пункт. | Текст: длина / макс. слово / пункт. | Опоры | Результат | |---|---|---|---|---| | G01-A1 | 21 / 15 / 1 | 67 / 9 / 1 | scope, audit.quantity | в лимитах | | G01-A2 | 35 / 8 / 0 | 59 / 10 / 0 | scope, audit.quantity, sessions.quantity (3), effective_offer_rule | в лимитах | Проверка текстов: регламенты и описание процессов не упоминаются; цены, сроки, налоги, оплата, гарантии, отзывы, ROI, экономия и результаты не заявлены. «3 учебные сессии команды» соответствует `sessions.quantity` = 3 и формулировке change-r2 «учебные сессии команды». G01-A1 текст не менялся. G01-A2 заменён по сравнению с base. Формальная проверка длины модерацию не подтверждает. Арифметика предложения (r2), эффективные количества × `unit_price_rub`: | Услуга | Кол-во | Цена за ед., RUB | Сумма, RUB | |---|---|---|---| | Аудит | 1 | 12 000 | 12 000 | | Регламенты | 0 | 9 000 | 0 | | Сессии | 3 | 6 000 | 18 000 | | **Итого** | | | **30 000** | Прежний итог 48 000 RUB (`package_price_rub`; в base сумма строк 48 000 совпадала) больше не относится к редакции: change-r2 объявляет его устаревшим (`supersedes`), а состав сократился на 2 регламента (−18 000 RUB). Новый итог вычислен мной, а не скопирован. Это учебная цена; налог и сумма к оплате не определены (`tax_status` = null). Цена в объявлениях не используется. ## Кандидаты минус-фраз и риски | query_id | Кандидат | Пересечение с Q01, Q02 | |---|---|---| | Q03 | разработка регламента | нет | | Q04 | (пусто, `no_candidate_needs_review`) | не проверялось — кандидата нет | | Q05 | что такое | нет | | Q06 | бесплатно | нет | | Q07 | вакансии | нет | | Q08 | скачать | нет | Одиночное «регламент» не предложено намеренно (риск расширенного сопоставления, хотя прямого пересечения с Q01/Q02 нет). Для Q04 кандидат не предложен: «процессов» близко к «процесса» в Q01, исключение общего термина опасно. Проверка только текстовая, не воспроизводит сопоставление Директа; кандидаты не готовы к применению и требуют проверки на реальных запросах. ## Согласованность UTM 2 строки = 2 `ad_id` из `ads.csv`; `group_id` G01 совпадает. `base_url` = `https://example.com/linea` (`company.json#/contact/website`). `utm_source=yandex`, `utm_medium=cpc`, `utm_campaign=lin-direct-01-r2-training` (в base было другое имя; в r2 единое), `utm_content` уникален (`g01-a1`, `g01-a2`), `utm_term` пуст. Значения в `tagged_url` разобраны и совпали с колонками (проверено); макросов нет. Статус `placeholder_not_live`; работу трекинга не утверждаем. ## Неизвестное до запуска См. `launch-checklist.md`: рекламодатель и кабинет, бюджет и ставки, география/таргетинг, посадочная (должна соответствовать r2), Метрика и метки, модерация, юридические условия — НЕ УСТАНОВЛЕНО / НЕ ПРОВЕРЕНО. Также `tax_status`, `payment_terms`, `delivery_dates`, `client_results`, `testimonials` (пустой список), `roi`, `contact.email` — неизвестны. ## Ошибки или ограничения - Известных нерешённых ошибок нет. - Исключение Q04 — суждение по формулировке change-r2 («описание рабочих процессов … не предлагаются»); при ином чтении преподавателя запрос можно пересмотреть. - Одна группа и два объявления — следствие сокращённого предложения, а не подгонка под число. - Длины и пунктуация посчитаны одноразовой командой в терминале; файлов проверяющих программ не создавалось. Сеть и кабинеты не использовались.