# P84 · 2025-02 · Проверка сгенерированного кода — три прохода ревью ## Граница пакета - Переписываются только `editorial-2025-02-practice-ai-code-verification`, `editorial-2025-02-mechanism-ai-code-verification` и `editorial-2025-02-field-ai-code-verification` через самостоятельный overlay `web/scripts/upgrade-2025-02.mjs`. - Все prompts, diff fragments, contracts, tests, roles, verdicts и «стоимость» — versioned fixed synthetic JavaScript literals в памяти. Пакет не читает и не пишет source repository, user code, secrets, Git, CI, сеть, telemetry, production, clock или API и не вызывает модель. - Скрипт не меняет `articles.json`; registry, README, очередь, staging, commit, push и полная production-сборка не входят в эту самостоятельную draft-партию. ## База исследования Все ссылки ниже открыты обычным HTTPS без авторизации и без TLS bypass: `curl -I -L --fail` вернул HTTP 200 для каждой. Один и тот же набор из трёх первичных/официальных источников указан в каждой статье; это больше минимальных двух источников и сохраняет один исторический срез на февраль 2025. | Источник | Версия / дата | Узкое утверждение в статье | Ограничение источника | | --- | --- | --- | --- | | [GitHub Docs: Responsible use of GitHub Copilot code review](https://github.com/github/docs/blob/7b3918e77baf865d1f16bd60e570acea874ee9eb/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-review.md) | immutable commit `7b3918e77baf865d1f16bd60e570acea874ee9eb`, 12.12.2024 | AI review и suggestions дополняют, а не заменяют человеческую проверку; предложения могут быть неверными, небезопасными, давать false positive или пропускать проблемы. | Документация одного preview-продукта. Она не измеряет качество других ассистентов, не задаёт merge policy и не доказывает конкретный synthetic case. | | [NIST SP 800-218, SSDF Version 1.1](https://csrc.nist.gov/pubs/sp/800/218/final) | final, 03.02.2022 | PW.7 связывает code review и analysis с правилами организации, фиксирует findings и triage; результаты analysis/testing могут быть входом peer review. | Это высокоуровневая рамка: не выбирает инструмент, не даёт порог покрытия и не определяет риск конкретного diff. | | [OWASP Code Review Guide 2.0](https://owasp.org/www-project-code-review-guide/assets/OWASP_Code_Review_Guide_v2.pdf) | release PDF, July 2017 | Code review проверяет security и logical controls; tools масштабируют поиск, но не заменяют контекст и человеческое подтверждение. | Руководство не даёт языковых правил, не заменяет threat model и не обещает найти все уязвимости. | Историческая оговорка: в текст не перенесены сведения о моделях, агентах, benchmark, policy или возможностях инструментов после февраля 2025. ## Проход 1 — факты и техника Проверил тезисы с узкими утверждениями источников и убрал обещания correctness/security. В статьях сказано, что contract check, static check, focused test, review и manual reproduction дают evidence с ограниченной областью действия; ни один из них и их комбинация не названы гарантией. Практическая модель закреплена в `synthetic-ai-code-verification-2025-02-v1` и принимает только три case: `contract-mismatch`, `hidden-side-effect`, `incomplete-test`. Она возвращает только in-memory report/plan/stop object и на невалидных данных работает fail-closed. Отрицательная fixture проверяет: - exact keys у input, report, plan и stop contracts; - dense arrays для evidence и actions; - unknown keys; - cyclic input/report/plan без выброса исключения; - canonical comparison fixed input, evidence и actions; - подменённые finding/action; - запрет merge без human approval и отсутствие production effect. Результат: ```text node --check scripts/upgrade-2025-02.mjs PASS node scripts/upgrade-2025-02.mjs --verify-fixture PASS fixture: 25/25 assertions ``` Ограничение этого прохода: fixture подтверждает форму синтетического механизма, не поведение реального линтера, теста, ревьюера, модели или системы доступа. ## Проход 2 — редактура и голос M8 Проверены первые два абзаца каждой статьи: в них есть симптом, причина и стоимость ошибки без вымышленных денег, инцидентов или метрик. Автор февраля 2025 сравнивает стоимость способов проверки и оставляет повторяемый процесс, но не делает вид, что владеет универсальной AI-стратегией. | Статья | Основной текст | Проверка голоса и содержания | | --- | ---: | --- | | Practice | 8 647 знаков | Один зелёный test не равен contract proof; дан verification plan, evidence table, fixed example и чёткий stop. | | Mechanism | 10 031 знак | Раскрыты matrix risk → evidence, overlap, independence, false confidence, scope и stop condition. | | Field | 10 695 знаков | Разобраны три diff case, evidence chain, human approval, next action и граница stop/revert/rollback. | Редакторская вычитка отдельно проверила: короткую связку «симптом → причина → проверка → действие», отсутствие шаблонных оборотов из аудита, отсутствие анхронизмов 2026–2027 и отсутствие ложной формулы «зелёный статус = безопасность». Термины привязаны к фиксированному контракту, field, input ownership или роли; финалы дают конкретное действие, а не лозунг. Результат автоматического редакторского аудита: ```text npm run audit:draft -- scripts/upgrade-2025-02.mjs PASS editorial-2025-02-practice-ai-code-verification: 8647 body chars PASS editorial-2025-02-mechanism-ai-code-verification: 10031 body chars PASS editorial-2025-02-field-ai-code-verification: 10695 body chars ``` Ограничение этого прохода: объём и стиль подтверждают плотность текста, но не переносят fixed verdict на чужой исходный код. ## Проход 3 — визуал и выпуск Для каждой статьи создан отдельный безопасный SVG с содержательным `alt` и подписью: воронка verification, matrix risk → evidence и evidence chain. SVG проверены как XML и safety scan не нашёл `script`, `foreignObject`, `javascript:`, `data:image` или event handlers. Каждый визуал отрендерен Sharp и вручную просмотрен на ширине 375 px. | Asset | Рендер 375 px | Что проверено вручную | | --- | --- | --- | | `ai-code-verification-2025-verification-funnel.svg` | 375 × 238 | Порядок пяти gates, красная stop-ветка и подписи читаются. | | `ai-code-verification-2025-risk-detection-matrix.svg` | 375 × 250 | Колонки, маркеры `✓`/`?` и легенда читаются без горизонтального обрезания. | | `ai-code-verification-2025-evidence-chain.svg` | 375 × 250 | Видны разница между observation/decision и раздельные ветки stop/human approval. | После первого узкого render-прохода сокращена подпись первого шага воронки и разбита длинная нижняя легенда матрицы на две строки; затем XML и рендер повторно проверены. ```text xmllint --noout <3 SVG> PASS SVG safety scan PASS Sharp 375 px + ручная проверка PASS ``` Полная build, registry update, staging, commit и push сознательно не запускались: это запрещено границей самостоятельного P84 draft-пакета. Перед будущей публикацией нужен отдельный выпускной проход с подключением overlay к registry и полной сборкой. ## Выпуск после независимой приёмки Основной редактор выполнил отдельные три прохода после подключения overlay: 1. **Факты и техника.** Raw-снимок GitHub Docs по commit 7b3918e77baf865d1f16bd60e570acea874ee9eb подтверждает дату 12 декабря 2024 и предупреждает, что Copilot code review дополняет, а не заменяет человеческий review; возможны пропуски, false positive и правдоподобный, но небезопасный код. В финальном PDF NIST SP 800-218 пункты PW.7.1–PW.7.2 требуют выбирать review/analysis по правилам организации, фиксировать и triage найденные вопросы. OWASP Guide 2.0 подтверждает, что tools не заменяют человеческий context и verification. Утверждения статей не выходят за эти границы; fixture повторно прошёл **25/25**. 2. **Редактура и голос.** Полные тексты перечитаны. Они различают стоимость проверки для маленького diff, ложную уверенность нескольких похожих зелёных сигналов и решение владельца границы. В начале каждой статьи есть симптом и цена ошибки, что повторно подтвердил усиленный `audit:draft`: 8 647 / 10 031 / 10 695 знаков. Термины contract, evidence, stop, revert и rollback раскрыты в контексте и не выданы за синонимы. 3. **Визуал и выпуск.** Три SVG отрисованы Sharp на 375 px и просмотрены: воронка 375×238, матрица 375×250, evidence chain 375×250. Карточки, стрелки, легенды и stop-ветви остаются читаемыми; XML и safety scan чисты. Целевой аудит подтверждает figure, code и таблицу в каждой статье. Реестр содержит **247 уникальных** ревизий, `git diff --check` чист, production build успешно сгенерировал **374** страницы. Вердикт: февральская партия готова к отдельному публикационному коммиту.