# Сентябрь 2018 — черновое тройное ревью «Воспроизводимое окружение Windows»
Пакет автономный и предназначен для отдельной интеграции:
- editorial-2018-09-practice-windows-dev-env
- editorial-2018-09-mechanism-windows-dev-env
- editorial-2018-09-field-windows-dev-env
В этой партии созданы только:
- web/scripts/upgrade-2018-09.mjs;
- три SVG в web/public/assets/editorial/2018/;
- этот файл ревью.
web/data/articles.json, реестр ревизий, аудит, стандарт качества, очередь и Git не менялись. Дата ревью: 31 июля 2026 года.
## 1. Факты и техника — пройдено
### Граница и первичные источники
| Утверждение в статье | Чем сверено | Оговорка в тексте |
| --- | --- | --- |
| В Windows у переменных среды есть Machine, User и Process scopes; дочерние процессы наследуют переменные родителя | [about_Environment_Variables](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-5.1), [Win32 Environment Variables](https://learn.microsoft.com/en-us/windows/win32/procthread/environment-variables) | Статья не утверждает, что старое окно мгновенно получает постоянную правку; проверка идёт в новом сеансе |
| PATH задаёт каталоги поиска, а PATHEXT — исполняемые расширения | [about_Environment_Variables](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-5.1) | Это не единственный слой выбора в PowerShell: отдельно названы alias, функции, cmdlet и внешние приложения |
| Get-Command -All показывает несколько одноимённых команд в порядке выбора PowerShell | [Get-Command](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/get-command?view=powershell-5.1) | where.exe не выдан за эквивалент: он помогает увидеть файлы в текущем каталоге и PATH |
| chcp показывает активную кодовую страницу; смена относится к программам, стартующим после неё | [chcp](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/chcp) | Кодовая страница консоли не приравнена к кодировке файла или настройке вывода .NET |
| JSON-снимок и дифф строятся стандартными PowerShell-командами | [ConvertTo-Json](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-5.1), [Compare-Object](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/compare-object?view=powershell-5.1) | Сравнение показывает различающиеся строки, а не доказывает причину без повторного запуска исходной команды |
### Технический проход
- Скрипт экспортирует три ревизии и не меняет архив при import.
- Контракт CLI проверен отдельно: --print-revisions выдал только валидный JSON из трёх объектов, без строки Usage и без stderr.
- В примерах нет команды, отключающей execution policy, антивирус, проверку сертификатов или иной механизм безопасности.
- Опасные данные ограничены заранее выбранными полями. В тексте отдельно сказано, что PATH может раскрыть имя пользователя и внутренние каталоги, поэтому JSON нужно просмотреть перед передачей.
- Поля PATH, кодовая страница, найденный кандидат и результат --version не смешаны в один «универсальный диагноз». Каждая статья называет следующий наблюдаемый шаг.
- Пути и версии в полевом разборе прямо помечены учебными. Они не приписываются реальному пользователю, команде или измерению.
- В рабочей среде нет Windows PowerShell 5.1, поэтому примеры не объявлены выполненными на другой ОС. Их синтаксис, параметры и фактические утверждения сверены с первичной документацией; перед публикацией на Windows нужен отдельный локальный прогон учебных .ps1.
## 2. Редактура и голос М1 — пройдено
| Ревизия | Один вопрос | Симптом и цена в начале | Освоенное умение 2018 года | Основной текст |
| --- | --- | --- | --- | --- |
| Практика | Какой минимальный снимок позволяет повторить запуск | Команда не находит инструмент или выбирает другой; риск — случайная глобальная правка и утечка переменных | PowerShell-скрипт, JSON и ручная проверка пути | 5 866 знаков без кода и источников |
| Механизм | Как PowerShell выбирает команду и где участвует кодовая страница | Версия отличается и текст нечитаем; риск — исправить не тот бинарник или повредить текст | Get-Command -All, where.exe, процессный PATH | 6 864 знака без кода и источников |
| Поле | Как найти различие между двумя машинами без переустановки | Одинаковая команда расходится; риск — стереть след случайными установками | Снимок, Compare-Object, обратимый опыт в новом сеансе | 7 343 знака без кода и источников |
- Голос удержан на М1: инженерская заметка 2018 года идёт от наблюдаемой ошибки к короткой команде, затем к ручной проверке.
- Не добавлены поздние роли, SLO, Kubernetes, контейнерные платформы, продуктовые метрики или непроверяемые истории внедрения.
- В каждом тексте есть один рисунок с осмысленным alt и подписью, одна доступная таблица, воспроизводимый PowerShell-фрагмент, нумерованный порядок действий, ограничения и точный заголовок <h2>Проверяемые источники</h2>.
- Убраны общие вводные и обещания «универсального решения». Утверждения ограничены версией, текущим процессом, конкретной командой или учебным примером.
### Третий редакторский проход — пройдено
- Независимый draft-gate вернул замечание только к editorial-2018-09-field-windows-dev-env: в первых 800 знаках был сценарий, но не было явного маркера проблемы.
- Первое предложение заменено минимально: оно начинается с Симптом:, сохраняет две Windows-машины, расходящийся запуск и цену поспешной переустановки.
- Остальная структура, объём, источники, визуал и тон М1 не менялись. Повторный npm run audit:draft -- scripts/upgrade-2018-09.mjs из web/ прошёл для всех трёх slug: 8 086 / 7 690 / 8 745 знаков body; node --check scripts/upgrade-2018-09.mjs также завершился успешно.
## 3. Визуал и выпуск — пройдено
- windows-dev-env-snapshot-2018.svg объясняет состав минимального снимка и границу с секретными данными.
- windows-dev-env-resolution-2018.svg разделяет поиск команды и проверку кодовой страницы; это предотвращает неверный вывод, что where.exe полностью описывает PowerShell.
- windows-dev-env-diff-2018.svg показывает порядок полевого разбора: одинаковая команда → очищенные снимки → одно отличие → обратимый опыт → повтор.
- Все схемы имеют адаптивный viewBox шириной 720px, используют контрастный текст и не содержат текста, который является единственным носителем смысла: связи также видны по группам и стрелкам.
- SVG открыты через локальный Quick Look в масштабе 1200px. При первом просмотре нижняя строка схемы полевого разбора выходила за правую границу; текст сокращён, схема отрендерена повторно без обрезания. На трёх схемах проверены стрелки, контраст, кириллица и отсутствие клиппинга.
### Выполненные команды и результат
node --check web/scripts/upgrade-2018-09.mjs
node web/scripts/upgrade-2018-09.mjs --print-revisions
node --input-type=module -e "import('./web/scripts/upgrade-2018-09.mjs').then(({revisions}) => { if (revisions.length !== 3) process.exit(1); })"
xmllint --noout web/public/assets/editorial/2018/windows-dev-env-snapshot-2018.svg
xmllint --noout web/public/assets/editorial/2018/windows-dev-env-resolution-2018.svg
xmllint --noout web/public/assets/editorial/2018/windows-dev-env-diff-2018.svg
- Все шесть команд завершились успешно. Отдельно проверены чистый import, точный порядок трёх slug, 5 000–15 000 знаков основного текста, 8 / 8 / 9 смысловых заголовков, по два блока кода, figure с непустым alt и подписью, таблица с thead, нумерованный маршрут, точный раздел источников и 4 / 5 / 5 внешних первичных ссылок.
- git diff --check по пяти файлам партии прошёл без пробелов и конфликтных маркеров. В статусе партии — ровно эти пять новых файлов; скрипт не импортирует и не записывает архив, реестр, аудит, стандарт, очередь или Git-историю.
- После интеграции основной редактор повторно прогнал strict audit через реестр ревизий и production build. Сборка прошла и сгенерировала 374 статические страницы.
Статус: принят в публикационный слой 31 июля 2026 года. Ревизии накладываются только по стабильным slug, без изменения даты, автора и базового архива.