This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Производство редакционных партий
|
||||
|
||||
На 31 июля 2026 года строгий аудит проходит 73 из 358 созданных материалов. Остальные 285 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
|
||||
На 31 июля 2026 года строгий аудит проходит 76 из 358 созданных материалов. Остальные 282 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
|
||||
|
||||
## Одна партия
|
||||
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
# Февраль 2020 — тройное ревью автономного пакета P24 «Настройки и секреты»
|
||||
|
||||
Статус: **принят в publication registry 31 июля 2026 года**. Ревизии
|
||||
накладываются только по stable slug и сохраняют даты и авторов базового архива:
|
||||
|
||||
- <code>editorial-2020-02-practice-configs-secrets</code>;
|
||||
- <code>editorial-2020-02-mechanism-configs-secrets</code>;
|
||||
- <code>editorial-2020-02-field-configs-secrets</code>.
|
||||
|
||||
Модуль экспортирует ровно три revision. В объектах намеренно нет
|
||||
<code>date</code> и <code>author</code>: дата и автор остаются у исходных
|
||||
записей архива. При прямом вызове <code>--print-revisions</code> stdout
|
||||
содержит только JSON.
|
||||
|
||||
## Проход 1. Факты, версии и технические ограничения — пройдено
|
||||
|
||||
| Утверждение или решение | Первичный источник | Проверенная граница |
|
||||
| --- | --- | --- |
|
||||
| `.gitignore` защищает только новый неотслеживаемый путь | [Git: gitignore](https://git-scm.com/docs/gitignore) | Тексты не называют его очисткой уже tracked файла или истории. |
|
||||
| `process.env` — вход runtime для Node | [Node.js v12: process.env](https://nodejs.org/dist/latest-v12.x/docs/api/process.html#process_process_env) | Loader в примерах добавлен самим приложением; Node не обещает типизацию, redaction или delivery policy. |
|
||||
| `ENV` сохраняется в образе, а credentials не стоит передавать через Docker build arguments | [Dockerfile reference](https://docs.docker.com/reference/dockerfile/) | Статьи не объявляют ARG безопасным хранилищем и не строят обязательную cloud-native платформу. |
|
||||
| Compose имеет несколько источников и приоритетов переменных | [Docker: environment variables in Compose](https://docs.docker.com/compose/how-tos/environment-variables/) | Материал не приписывает конкретную конфигурацию этому проекту; источник и итог нужно проверить в каждом контуре. |
|
||||
| Удалить строку недостаточно для активного credential | [GitHub: leaked-secret remediation](https://docs.github.com/en/code-security/tutorials/remediate-leaked-secrets/remediating-a-leaked-secret) | Ротация показана как учебный маршрут. Пакет не отзывал реальный ключ и не делал production-проверку. |
|
||||
|
||||
Историческая граница зафиксирована сознательно: это М3 / февраль 2020 года.
|
||||
Автор связывает backend loader, Docker image, CI/deploy delivery и logging,
|
||||
но не выдаёт любой проект за Kubernetes-ландшафт и не рекомендует современные
|
||||
secrets-платформы как исходную норму. Допустимый минимум — защищённая переменная
|
||||
CI, файл с ограниченным доступом или привычный проекту канал запуска с явным
|
||||
владельцем и маршрутом ротации.
|
||||
|
||||
Все значения в коде и конфигурации очевидно фиктивны: домен
|
||||
<code>gateway.invalid</code>, <code>DEMO_ONLY_NOT_A_SECRET</code> и
|
||||
<code>DEMO_NOT_A_REAL_TOKEN</code>. Реальных ключей, приватных 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 не менее пяти смысловых разделов, таблица с
|
||||
<code>caption</code>/<code>thead</code>, самостоятельный рисунок с alt и
|
||||
caption, code/config example, упорядоченный маршрут и не менее двух
|
||||
первичных или официальных источников.
|
||||
- Тон М3 сохраняет практическую ширину автора: он уже видит стык backend и
|
||||
delivery, но не приписывает команде SLO, supply-chain attestations,
|
||||
универсальную secret platform или вымышленный production incident.
|
||||
|
||||
Вердикт прохода: **пройден**. Фактический gate подтвердил объём и структуру
|
||||
всех трёх revision.
|
||||
|
||||
## Проход 3. Визуал и выпуск автономного пакета — пройдено в заданных границах
|
||||
|
||||
- <code>config-secret-boundary-2020.svg</code> показывает четыре поверхности
|
||||
значения: repository, delivery, runtime и support/log. Его задача — отделить
|
||||
secret от обычного config value, а не изобразить конкретный CI.
|
||||
- <code>config-secret-delivery-path-2020.svg</code> ведёт от versioned шаблона
|
||||
через delivery и loader к рабочему процессу и redacted report. Диаграмма
|
||||
показывает, почему build и runtime не получают одинаковые данные.
|
||||
- <code>config-secret-rotation-2020.svg</code> отделяет обнаружение, ограничение
|
||||
распространения, replacement, revoke и follow-up. Она не изображает
|
||||
несуществующий production incident.
|
||||
- У SVG есть <code>title</code>, <code>desc</code>, <code>role="img"</code>,
|
||||
вертикальные viewBox, контрастные карточки и короткие подписи. В файлах нет
|
||||
JavaScript, <code>foreignObject</code>, внешних URL и растровых data URI.
|
||||
- SVG локально отрендерены через Sharp при ширине **375 px**. Короткие подписи
|
||||
читаемы, обрезания и горизонтального выхода за границы внутри SVG не найдено.
|
||||
Это не browser e2e, не скриншот опубликованной страницы и не проверка
|
||||
assistive technology; таких утверждений пакет не делает.
|
||||
- Основной редактор независимо просмотрел все три финальные raster-версии на
|
||||
375 px: вывод подтверждён. После подключения registry strict audit и
|
||||
production build также пройдены; это не подменяет реальную проверку delivery
|
||||
контура или ротации credential.
|
||||
|
||||
### Фактические команды и результаты
|
||||
|
||||
Команды запускаются после создания всех пяти файлов:
|
||||
|
||||
<pre><code>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</code></pre>
|
||||
|
||||
| Проверка | Фактический результат |
|
||||
| --- | --- |
|
||||
| `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 или ротация были
|
||||
запущены; эти действия остаются отдельным сценарием проекта.
|
||||
Reference in New Issue
Block a user