Files
progcode/editorial/reviews/2025-02-draft.md
T
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

123 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
<code>7b3918e77baf865d1f16bd60e570acea874ee9eb</code> подтверждает дату
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** страницы.
Вердикт: февральская партия готова к отдельному публикационному коммиту.