# QA: самопроверка Это самопроверка автора, а не независимая приёмка. Ничего не отправлялось, сеть и внешние инструменты не использовались. ## Что проверено фактически - Прочитаны README.md, OUTPUT-CONTRACT.json и ровно три входа: input/company.json, input/profiles.csv, input/contact-policy.json. - SHA256 в drafts.json и stop-decisions.json пересчитаны по байтам входов и совпали (company.json 57efa0b2…, profiles.csv da6dcced…, contact-policy.json cce6bb78…). Входы не изменялись. - В output/ ровно пять файлов: drafts.md, drafts.json, consent-register.csv, stop-decisions.json, qa.md. - Скриптовая проверка (разовая, без сохранения файлов): в каждом теле ровно один «?», onequestioncta входит в body дословно и стоит в конце, plain_text равен body; тема, preheader и тела из JSON найдены в drafts.md; CSV содержит P01–P04 без пропусков и дублей. ## Факты и источники Каждое утверждение в письмах привязано в fact_sources к файлу и полю: роль, business_trigger и company_label (profiles.csv по prospect_id), название компании «Линия» (company.json: name), scope и цены (company.json: scope, offer.audit 1×12000, offer.regulations 2×9000), учебный характер цены (restrictions[2]), разрешение локальных черновиков (contact-policy.json rules[0]). Размер команды, бюджет, потери, CRM, сроки, ROI, отзывы, реквизиты, контакты, согласие не использовались. ## Исправление после разбора первой попытки Найден пробел: все три письма называют «Линия», но в fact_sources не было company.json: name. В drafts.json для P01, P02 и P03 добавлена запись {file: input/company.json, field: name, fact: Линия}. Тексты писем (subject, preheader, body, onequestioncta, plain_text), unknowns, status, send_allowed, source_hashes, остальные результаты и входы не менялись. Повторная сверка (разовая проверка без сохранения файлов): название из company.json присутствует в теле каждого письма и есть в fact_sources каждого письма; в каждом теле по-прежнему ровно один «?», plain_text равен body, status DRAFT_ONLY, send_allowed=false; тексты писем из drafts.json по-прежнему найдены в drafts.md; SHA256 трёх входов совпали с source_hashes; в output/ по-прежнему ровно пять файлов. Это исправление источников, а не новая независимая приёмка. ## Различия пользы - P01 (операционный директор, передача задач от продаж исполнителю): описать одну такую передачу тремя пунктами; вопрос о признаке завершения; упомянут аудит. - P02 (собственник, расширение команды): выбрать один процесс для нового человека, так как процесс не указан; вопрос о выборе процесса. - P03 (руководитель команды, адаптация новичка): описать первую задачу новичка; вопрос о выборе задачи; упомянуты регламенты. ## Неизвестные team_size пуст у всех; process пуст у P02 и P03, у P01 только «передача задачи»; бюджет, потери, CRM, контакты; сроки, налоги, условия оплаты, реквизиты (null в company.json); результаты клиентов, отзывы, ROI; согласие реального адресата. contact.email в company.json равен null. ## Решения политики - P04 opt_out: STOP, черновик не создан, основание SYN-STOP-04 (stop-decisions.json, CSV: NO_DRAFT). - P02 unknown: BLOCK_SEND; локальный черновик разрешён отдельно (rules[0]) и отправку не разрешает. - P01, P03 synthetic_only: черновик разрешён, но это не согласие реального адресата; ограничение объяснено в CSV. - send_allowed=false везде. ## Согласованность файлов drafts.md и drafts.json содержат одни и те же три черновика (P01–P03) со статусом DRAFT_ONLY и send_allowed=false; P04 в них отсутствует. CSV и stop-decisions.json согласованы по статусам P02 и P04. ## Ограничения Цены и состав услуги приведены только как учебные данные из company.json. Смысловое качество текстов оценено только автором.