Files
huncode 8a27f0f966
Build and deploy / deploy (push) Successful in 15s
revise February 2025 AI code verification articles
2026-07-31 17:20:09 +03:00

12 KiB
Raw Permalink Blame History

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 immutable commit 7b3918e77baf865d1f16bd60e570acea874ee9eb, 12.12.2024 AI review и suggestions дополняют, а не заменяют человеческую проверку; предложения могут быть неверными, небезопасными, давать false positive или пропускать проблемы. Документация одного preview-продукта. Она не измеряет качество других ассистентов, не задаёт merge policy и не доказывает конкретный synthetic case.
NIST SP 800-218, SSDF Version 1.1 final, 03.02.2022 PW.7 связывает code review и analysis с правилами организации, фиксирует findings и triage; результаты analysis/testing могут быть входом peer review. Это высокоуровневая рамка: не выбирает инструмент, не даёт порог покрытия и не определяет риск конкретного diff.
OWASP Code Review Guide 2.0 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.

Результат:

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 или роли; финалы дают конкретное действие, а не лозунг.

Результат автоматического редакторского аудита:

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 и рендер повторно проверены.

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 страницы.

Вердикт: февральская партия готова к отдельному публикационному коммиту.