Files
progcode/editorial/reviews/2020-02-draft.md
T
huncode 839a9aeeb8
Build and deploy / deploy (push) Successful in 12s
revise February 2020 configuration articles
2026-07-31 11:14:56 +03:00

12 KiB
Raw Blame History

Февраль 2020 — тройное ревью автономного пакета P24 «Настройки и секреты»

Статус: принят в publication registry 31 июля 2026 года. Ревизии накладываются только по stable slug и сохраняют даты и авторов базового архива:

  • editorial-2020-02-practice-configs-secrets;
  • editorial-2020-02-mechanism-configs-secrets;
  • editorial-2020-02-field-configs-secrets.

Модуль экспортирует ровно три revision. В объектах намеренно нет date и author: дата и автор остаются у исходных записей архива. При прямом вызове --print-revisions stdout содержит только JSON.

Проход 1. Факты, версии и технические ограничения — пройдено

Утверждение или решение Первичный источник Проверенная граница
.gitignore защищает только новый неотслеживаемый путь Git: gitignore Тексты не называют его очисткой уже tracked файла или истории.
process.env — вход runtime для Node Node.js v12: process.env Loader в примерах добавлен самим приложением; Node не обещает типизацию, redaction или delivery policy.
ENV сохраняется в образе, а credentials не стоит передавать через Docker build arguments Dockerfile reference Статьи не объявляют ARG безопасным хранилищем и не строят обязательную cloud-native платформу.
Compose имеет несколько источников и приоритетов переменных Docker: environment variables in Compose Материал не приписывает конкретную конфигурацию этому проекту; источник и итог нужно проверить в каждом контуре.
Удалить строку недостаточно для активного credential GitHub: leaked-secret remediation Ротация показана как учебный маршрут. Пакет не отзывал реальный ключ и не делал production-проверку.

Историческая граница зафиксирована сознательно: это М3 / февраль 2020 года. Автор связывает backend loader, Docker image, CI/deploy delivery и logging, но не выдаёт любой проект за Kubernetes-ландшафт и не рекомендует современные secrets-платформы как исходную норму. Допустимый минимум — защищённая переменная CI, файл с ограниченным доступом или привычный проекту канал запуска с явным владельцем и маршрутом ротации.

Все значения в коде и конфигурации очевидно фиктивны: домен gateway.invalid, DEMO_ONLY_NOT_A_SECRET и DEMO_NOT_A_REAL_TOKEN. Реальных ключей, приватных endpoint и рабочих имён окружений в пакете нет.

Вердикт прохода: пройден. Нормативные свойства отделены от учебных примеров; современная документация использована для границ механизма, а не как утверждение о конкретно выполненном production change 2020 года.

Проход 2. Редактура и голос М3 / февраль 2020 — пройдено

Ревизия Проблема и цена в первых абзацах Главный вопрос Проверяемое действие и ограничение
Практика Токен копируют из локального env в Git, image или лог; цена — ротация, остановка delivery и широкая поверхность читателей Как описать классы конфигурации и дать сервису минимальный contract Инвентарь, loader, безопасный шаблон и маршрут из шести шагов; выбор хранилища остаётся за проектом
Механизм Runtime получает неверный URL или credential остаётся в image/log; цена — недоступность и расширение утечки во время диагностики Где проходят границы repository, build, image, delivery, process и log Таблица носителей, Dockerfile без секрета, loader и диагностический route; нет утверждения о фактическом deploy
Полевой разбор Authorization попал в error-log; цена — действующий credential в нескольких носителях Почему redaction и cleanup не равны revoke Учебная карта incident, redaction fixture и восьмишаговая ротация; provider portal и production не запускались
  • Draft gate измерил основной текст без sources: практика — 8 457 знаков, механизм — 8 628, полевой разбор — 8 886. Все три значения лежат в коридоре 5 000–15 000; в тексте нет растягивающих вступлений и поздней техлид-риторики.
  • В трёх материалах выдержана цепочка «симптом → причина → проверка → действие». Термины привязаны к наблюдаемой поверхности: tracked path, Docker image, delivery, runtime loader, request ID, redact и revoke.
  • У каждой revision не менее пяти смысловых разделов, таблица с caption/thead, самостоятельный рисунок с alt и caption, code/config example, упорядоченный маршрут и не менее двух первичных или официальных источников.
  • Тон М3 сохраняет практическую ширину автора: он уже видит стык backend и delivery, но не приписывает команде SLO, supply-chain attestations, универсальную secret platform или вымышленный production incident.

Вердикт прохода: пройден. Фактический gate подтвердил объём и структуру всех трёх revision.

Проход 3. Визуал и выпуск автономного пакета — пройдено в заданных границах

  • config-secret-boundary-2020.svg показывает четыре поверхности значения: repository, delivery, runtime и support/log. Его задача — отделить secret от обычного config value, а не изобразить конкретный CI.
  • config-secret-delivery-path-2020.svg ведёт от versioned шаблона через delivery и loader к рабочему процессу и redacted report. Диаграмма показывает, почему build и runtime не получают одинаковые данные.
  • config-secret-rotation-2020.svg отделяет обнаружение, ограничение распространения, replacement, revoke и follow-up. Она не изображает несуществующий production incident.
  • У SVG есть title, desc, role="img", вертикальные viewBox, контрастные карточки и короткие подписи. В файлах нет JavaScript, foreignObject, внешних URL и растровых data URI.
  • SVG локально отрендерены через Sharp при ширине 375 px. Короткие подписи читаемы, обрезания и горизонтального выхода за границы внутри SVG не найдено. Это не browser e2e, не скриншот опубликованной страницы и не проверка assistive technology; таких утверждений пакет не делает.
  • Основной редактор независимо просмотрел все три финальные raster-версии на 375 px: вывод подтверждён. После подключения registry strict audit и production build также пройдены; это не подменяет реальную проверку delivery контура или ротации credential.

Фактические команды и результаты

Команды запускаются после создания всех пяти файлов:

cd web
node --check scripts/upgrade-2020-02.mjs
npm run audit:draft -- scripts/upgrade-2020-02.mjs
xmllint --noout \
  public/assets/editorial/2020/config-secret-boundary-2020.svg \
  public/assets/editorial/2020/config-secret-delivery-path-2020.svg \
  public/assets/editorial/2020/config-secret-rotation-2020.svg
Проверка Фактический результат
node --check scripts/upgrade-2020-02.mjs PASS, код 0
npm run audit:draft -- scripts/upgrade-2020-02.mjs PASS: 8 457 / 8 628 / 8 886 знаков; три slug, tables, figures, code, routes, sources и локальные assets найдены
xmllint --noout для трёх SVG PASS, код 0
Локальный visual preflight PASS: Sharp-render при 375 px, нет clipping или horizontal overflow внутри схем
Strict audit после подключения registry PASS: 8 457 / 8 628 / 8 886 знаков; по одному figure и table, 2 / 2 / 1 code example
npm run build PASS, code 0, 374 статические страницы
Scope/self-review PASS: в revision нет date/author, а articles.json не перезаписан

Выпусковой вердикт: тройное ревью пройдено, пакет принят к публикации. Registry заменяет только редакционные поля по stable slug. Статические checks не означают, что реальный delivery-контур, provider portal или ротация были запущены; эти действия остаются отдельным сценарием проекта.