157 lines
15 KiB
Markdown
157 lines
15 KiB
Markdown
# P83 — январь 2025: помощник для написания кода
|
||
|
||
## Область пакета
|
||
|
||
Заменяются только три overlay-статьи:
|
||
|
||
- <code>editorial-2025-01-practice-ai-coding-assistant</code> — «Prompt не заменяет постановку задачи».
|
||
- <code>editorial-2025-01-mechanism-ai-coding-assistant</code> — «Почему правдоподобный код ломает контракт».
|
||
- <code>editorial-2025-01-field-ai-coding-assistant</code> — «Проверить сгенерированный diff до merge».
|
||
|
||
Пакет содержит только fixed synthetic in-memory literals. Он не вызывает модель,
|
||
не использует реальные prompts, customer code, repository, secrets, файлы, Git,
|
||
сеть, CI, часы, production, метрики или evaluation results. Ни один пример не
|
||
является результатом реального помощника, repository scan или production test run.
|
||
|
||
## Исследование и историческая граница
|
||
|
||
Проверка URL выполнена 31.07.2026 обычным HTTPS GET без авторизации и без TLS
|
||
bypass: все четыре URL вернули HTTP 200. Дата сетевой проверки не изменяет
|
||
историческую границу статьи: GitHub Docs закреплён commit от 31.01.2025, NIST
|
||
SSDF — финальная публикация от 03.02.2022. В материалах нет утверждений о
|
||
моделях, функциях или результатах после января 2025.
|
||
|
||
| Источник | Дата / версия | URL | Узко поддерживаемое утверждение | Граница утверждения |
|
||
| --- | --- | --- | --- | --- |
|
||
| GitHub Docs: Copilot Chat limitations | immutable commit <code>6a92295d</code>, 31.01.2025 | https://github.com/github/docs/blob/6a92295d73cd86b37a810a87f45e7deb21d10a0f/data/reusables/rai/copilot/copilot-chat-ide-limitations.md | Помощник ограничен контекстом; generated code может выглядеть валидным, но не совпадать с intent; sensitive code надо тщательно review и test. | Это responsible-use guidance конкретного продукта. Не измеряет качество любой модели и не доказывает, что конкретный diff корректен или безопасен. |
|
||
| GitHub Docs: improving Copilot Chat performance | immutable commit <code>6a92295d</code>, 31.01.2025 | https://github.com/github/docs/blob/6a92295d73cd86b37a810a87f45e7deb21d10a0f/data/reusables/rai/copilot/copilot-chat-ide-improving-performance.md | Рекомендовано держать запрос на coding-задаче, применять помощник как tool rather than replacement и использовать secure coding/code review. | Не обещает, что хороший prompt, линтер или test дают correctness, security либо compatibility. |
|
||
| GitHub Docs: reviewing proposed pull-request changes | immutable commit <code>6a92295d</code>, 31.01.2025 | https://github.com/github/docs/blob/6a92295d73cd86b37a810a87f45e7deb21d10a0f/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request.md | Pull-request review рассматривает commits, files и diff; reviewer может comment, approve или request changes. | Описывает UI-механику review, а не гарантию отсутствия дефектов после просмотра или approve. |
|
||
| NIST SP 800-218 SSDF Version 1.1 | final, 03.02.2022 | https://csrc.nist.gov/pubs/sp/800/218/final | Набор secure-development practices можно интегрировать в конкретный SDLC для снижения числа уязвимостей и последствий невыявленных проблем. | Высокоуровневая рамка не заменяет domain contract, test data, human review и решение owner о residual risk. |
|
||
|
||
Каждая из трёх статей ссылается минимум на эти два вида первичного или
|
||
официального материала: historical tool documentation и secure-development /
|
||
review documentation. Версионные GitHub-ссылки не ведут на mutable <code>main</code>.
|
||
|
||
## Проход 1 — факты и техника
|
||
|
||
**Источники и утверждения.**
|
||
|
||
- Ограничения assistant сформулированы узко: context limit, возможное
|
||
расхождение с developer intent и необходимость review/test. Нет заявления,
|
||
что модель делает review сама или что любой ответ небезопасен.
|
||
- Prompt-card выведена как инженерная карточка scope, а не как vendor feature и
|
||
не как рецепт повышения benchmark. Она связывает task, allowed context,
|
||
negative constraints, owner и evidence.
|
||
- GitHub pull-request guidance использована только для diff-oriented review и
|
||
явно не превращена в proof of correctness.
|
||
- SSDF использован как аргумент встраивать secure-development practices в SDLC,
|
||
а не как доказательство security конкретного diff.
|
||
- Январь 2025 не получает поздних agent modes, современных model names,
|
||
корпоративных evaluation figures или claims о будущих workflows.
|
||
|
||
**Проверен reproducible artifact.**
|
||
|
||
- <code>createFixedSyntheticAiCodingInput</code> принимает только три
|
||
заранее заданных case id; все значения заморожены и расположены в памяти.
|
||
- <code>inspectSyntheticAiCodingAssistant</code> принимает exact input contract,
|
||
создаёт canonical report и не обращается к модели, prompt, repository,
|
||
customer code, filesystem, Git, CI, сети или production.
|
||
- <code>planSyntheticAiCodingReview</code> принимает лишь canonical accepted
|
||
report и создаёт human-review draft. Он не выполняет merge, rollout или review
|
||
в удалённой системе.
|
||
- <code>stopSyntheticAiCodingReview</code> возвращает только in-memory stop
|
||
record. Это не branch rollback и не возвращение production state.
|
||
- Fixture проверяет exact input/report/draft/stop contracts, dense arrays,
|
||
unknown keys, forged decision, cyclic input/report/draft и safe canonical
|
||
comparison without throw.
|
||
|
||
**Вердикт:** пройдено. Синтетические примеры не притворяются данными о модели
|
||
или реальной системе, а внешние источники не расширены до несуществующих гарантий.
|
||
|
||
## Проход 2 — редактура и голос
|
||
|
||
Январь 2025 соответствует M8 — инженер-наставник. Текст называет стоимость
|
||
плохого решения, owner, residual risk и воспроизводимый маршрут, но не делает
|
||
вид, что автор провёл организационное внедрение или располагает закрытыми данными.
|
||
Прагматическая формула везде одинакова: «симптом → причина → проверка → действие».
|
||
|
||
| Статья | Проблема и цена в первых двух абзацах | Основной текст | Практический артефакт | Проверяемый финал |
|
||
| --- | --- | ---: | --- | --- |
|
||
| practice | Неназванный scope превращает candidate code в изменение без владельца; review дорожает и теряется контракт. | 8 827 знаков | prompt-card, bounded-diff route, scope table | Заполнить пять полей для одной задачи и принять / остановить только проверяемый diff. |
|
||
| mechanism | Код выглядит готовым, но меняет invalid result или side effect; команда теряет контракт. | 9 808 знаков | five-evidence matrix, error matrix, pure fixture | Для changed branch назвать contract row, test evidence и unknown. |
|
||
| field | Small generated diff проходит визуальную проверку, но скрывает scope, contract или test mismatch перед merge. | 8 006 знаков | three fixed cases, verification gate, stop-boundary workflow | Остановить proposal на первом незащищённом условии и запросить exact evidence. |
|
||
|
||
Редакторская вычитка:
|
||
|
||
- В каждом из первых двух абзацев названы situation и concrete cost; нет
|
||
декларации о «важности AI».
|
||
- Термины <code>owner</code>, bounded diff, contract, evidence и stop boundary
|
||
появляются рядом с operational meaning, а не в виде списка модных слов.
|
||
- Все статьи содержат table, figure с meaningful <code>alt</code> и caption,
|
||
compact reproducible example, sources, limitations и concrete next step.
|
||
- Удалены универсальные обещания, будто prompt, test, линтер или модель дают
|
||
correctness/security. Unknown сохранён как отдельный честный результат.
|
||
- Тон короткий и технический: каждый смысловой абзац добавляет symptom, cause,
|
||
check, action, limitation или outcome.
|
||
|
||
**Вердикт:** пройдено. <code>audit:draft</code> подтвердил структуру и объём
|
||
всех трёх статей; каждая лежит в целевом коридоре 8–10 тыс. знаков.
|
||
|
||
## Проход 3 — визуал и выпуск
|
||
|
||
Три SVG созданы вручную, без внешних изображений и скриптов:
|
||
|
||
| Asset | Смысл | Проверка на 375 px |
|
||
| --- | --- | --- |
|
||
| <code>ai-coding-assistant-2025-prompt-diff-review.svg</code> | prompt-card → bounded diff → review → test; выход за scope ведёт к stop. | 375×258, читаемо. В первом проходе крайняя карточка была слишком узкой; четыре шага выровнены и SVG повторно отрендерен. |
|
||
| <code>ai-coding-assistant-2025-error-matrix.svg</code> | error matrix для scope, contract, test evidence и unknowns. | 375×258, читаемо после укрупнения body labels. |
|
||
| <code>ai-coding-assistant-2025-verification-gate.svg</code> | verification gate и различие stop-before-merge / human decision. | 375×258, читаемо. |
|
||
|
||
Выполненные release-проверки:
|
||
|
||
- <code>node --check web/scripts/upgrade-2025-01.mjs</code> — PASS.
|
||
- <code>node web/scripts/upgrade-2025-01.mjs --verify-fixture</code> — PASS,
|
||
35/35 assertions.
|
||
- <code>npm run audit:draft -- scripts/upgrade-2025-01.mjs</code> — PASS:
|
||
practice 8 827, mechanism 9 808, field 8 006 знаков.
|
||
- <code>xmllint --noout</code> для трёх SVG — PASS; safety scan на
|
||
<code>script</code>, <code>foreignObject</code>, <code>javascript:</code>,
|
||
<code>data:image</code> и event handlers — clean.
|
||
- Sharp render шириной 375 px и ручное чтение диаграмм — PASS, все три
|
||
результата 375×258.
|
||
|
||
**Вердикт:** пройдено для самостоятельного draft-пакета. Визуальный дефект
|
||
узкой карточки найден и исправлен до финального render; source URLs и все
|
||
артефакты доступны без авторизации и TLS bypass.
|
||
|
||
Общий build, registry, README, очередь, <code>articles.json</code>, Git,
|
||
staging, commit и push намеренно не входят в пакет. Их не трогаем до отдельной
|
||
интеграции после review.
|
||
|
||
## Выпуск после независимой приёмки
|
||
|
||
Основной редактор повторил три прохода уже после регистрации overlay-ревизий:
|
||
|
||
1. **Факты и техника.** Raw-файлы GitHub Docs прочитаны по immutable commit
|
||
<code>6a92295d</code>; API GitHub подтверждает дату снимка — 31 января
|
||
2025. Limitations прямо говорят о контекстной границе, возможности
|
||
правдоподобного, но не соответствующего намерению кода и необходимости
|
||
review/test. Guidance о prompts требует использовать помощник как инструмент,
|
||
а не замену программиста. Официальная страница NIST подтверждает final-дату
|
||
SSDF 1.1 — 3 февраля 2022 — и его роль как интегрируемого набора secure
|
||
development practices. В статье у каждой ссылки видна её версия.
|
||
2. **Редактура и голос.** Полные тексты перечитаны: они начинают с конкретной
|
||
цены ложноположительного diff и проходят через scope, контракт, доказательство
|
||
и действие. Рабочие англоязычные термины раскрыты рядом с задачей: bounded
|
||
diff, owner, contract, evidence, unknown и stop boundary. Повторы не
|
||
подменяют модельный ответ фактом, а учебные кейсы не выдают себя за результаты
|
||
реального помощника. `audit:draft` подтвердил 8 827 / 9 808 / 8 006 знаков.
|
||
3. **Визуал и выпуск.** Три SVG повторно отрисованы Sharp на 375 px и
|
||
просмотрены: prompt → diff → review, матрица ошибок и verification gate
|
||
остаются читаемыми. XML и safety scan чисты. Fixture проходит **35/35**;
|
||
целевой аудит подтверждает минимум две таблицы, рисунок и код в каждой
|
||
статье. Реестр содержит **244 уникальные** ревизии, `git diff --check` чист,
|
||
а production build успешно сгенерировал **374** страницы.
|
||
|
||
Вердикт: январская партия готова к отдельному публикационному коммиту.
|