Files
huncode 78dfdb6015
Build and deploy / deploy (push) Successful in 15s
revise July 2024 release engineering articles
2026-07-31 16:04:34 +03:00

47 lines
14 KiB
Markdown
Raw Permalink 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.
# P77 · 2024-07 · Инженерия релиза — три самостоятельных прохода ревью
## Рамка sidecar-пакета
- Archive slugs: <code>editorial-2024-07-practice-release-engineering</code>, <code>editorial-2024-07-mechanism-release-engineering</code>, <code>editorial-2024-07-field-release-engineering</code>.
- Голос: M7, июль 2024. Каждая статья начинает с конкретной версии, artifact, migration plan и rollout card, называет цену расхождения и ведёт по короткой связке «симптом → причина → проверка → действие». Текст не объявляет fixed fixture реальной поставкой, registry, pipeline, CI run, deploy, облаком, журналом доставки или production result.
- Созданы ровно пять sidecar-файлов: этот review, один import-safe script и три локальных SVG. Overlay, README, очередь, <code>articles.json</code>, Git, staging, commit/push и чужие файлы не менялись. Пакет намеренно не интегрирован.
- Fixture хранит только versioned fixed synthetic JS objects в памяти Node: commit, artifact, migration plan, rollout card и rollback candidate. У него нет входа для URL, файлов, environment, clock, реального digest, credential, CI log, deploy target или сети. PASS означает только согласованность embedded teaching records и негативных веток.
## Проход 1 — источники, техника и модель
- Источники сверены 31.07.2026 и намеренно ограничены первичными официальными материалами, доступными к июлю 2024. [SLSA: SLSA v1.0 is now final!](https://slsa.dev/blog/2023/04/slsa-v1-final) датирован 19.04.2023 и фиксирует первый stable SLSA v1.0. В пакет взята узкая дисциплина: artifact, provenance и verification expectations — разные сущности; источник не даёт claim о конкретной сборке или policy команды.
- [GitHub Changelog: Artifact Attestations is generally available](https://github.blog/changelog/2024-06-25-artifact-attestations-is-generally-available/) датирован 25.06.2024. Он показывает, что attestation для build artifact и её verification — отдельные операции. В статьях это служит исторической опорой для разделения artifact, statement и approval, а не заявлением, что sidecar создаёт или проверяет attestation.
- [Kubernetes documentation: Deployments, snapshot 14.03.2024](https://github.com/kubernetes/website/blob/c889d9b2510bba78dbb527a79b8e2099b16f3d67/content/en/docs/concepts/workloads/controllers/deployment.md) — неизменяемый снимок первичной ветки release-1.30, существовавший до конца июля 2024. Из него использована одна граница: Deployment revision и rollback относятся к Pod template. Ни текст, ни fixture не приравнивают такой rollback к отмене migration, data effect или операции в чужой среде.
- Модель задаёт четыре fixed case. <code>fixed-aligned-release</code> связывает release <code>2024.07.0</code>, source commit, artifact digest, compatible migration и proposed rollout card. Три negative cases раздельно показывают artifact, который не binds commit; migration, нацеленную на <code>2024.07.1</code>; и rollout card с другим digest. Они не описывают реальную delivery system.
- <code>inspectSyntheticReleaseEvidence()</code> сравнивает exact relations: version commit/artifact/rollout, <code>artifact.sourceCommitId</code>, migration target и compatibility, requested digest и migration version rollout card, а также versioned return point. False relation ведёт к точному <code>stop-and-reconcile-records</code>, не к retry и не к deploy.
- Input contract закрыт: marker <code>synthetic</code>, exact scope, <code>fixed-memory-only</code> mode и known case id. CI-like/deploy-like extra fields, другой scope, режим чтения registry и unknown case отдельно отклоняются. Во всех report и plan явно записаны <code>not-read</code>, <code>not-run</code> и <code>not-attempted</code> для Git, registry, CI, deploy, cloud, production, delivery logs, filesystem и network.
- План повторно строит canonical report по embedded case и сравнивает весь object. Подмена decision, record или добавление deployment-like field дают отказ. <code>draftSyntheticControlledRollback()</code> выдаёт только versioned return draft для aligned case; чужой action и stop case не проходят. Rollback draft прямо хранит boundary <code>does-not-reverse-data-and-requires-separate-human-review</code>.
- Технические проверки: <code>node --check web/scripts/upgrade-2024-07.mjs</code> — PASS; <code>node web/scripts/upgrade-2024-07.mjs --verify-fixture</code> — PASS, 27/27 assertions. Это проверка модели в памяти, не CI test, deploy validation, artifact verification или production approval.
## Проход 2 — стиль, объём и голос
- Все три ревизии начинают с конкретного сценария и цены. Practice разбирает четыре совпадающие на вид карточки и цену потери source relation. Mechanism показывает, что общий tag скрывает разные objects и превращает retry в ложное действие. Field разбирает aligned case и три разных mismatch, чтобы не называть каждый stop «неудачным релизом».
- В каждом тексте присутствует короткий прагматичный маршрут: symptom — знакомая версия на разных стадиях; cause — свободные связи между records; check — exact predicate commit/artifact/migration/digest; action — stop, reconcile и только потом human review. Нет абстрактного требования «лучше документировать» без owner-а, predicate или следующего шага.
- <code>audit:draft</code> посчитал основной текст без раздела sources: practice — **9 243** знака, mechanism — **10 370** знаков, field — **9 759** знаков. Все три значения внутри обязательного диапазона 5 000–15 000 и целевого коридора 9–11 тыс.
- В каждой статье есть содержательная SVG figure с alt и caption, working table с заголовками, исполнимый Node example, ordered route, ограничения и отдельный следующий проверяемый шаг. Примеры запускают только fixture и прямо называют её synthetic boundary. Они не содержат YAML workflow, real registry path, cloud call, CI log, deploy command или production claim.
- Practice отвечает на вопрос, какие exact links нужны от commit до rollout intent. Mechanism отделяет provenance-like relation, decision draft и controlled rollback boundary. Field учит различать три negative outcomes и направлять вопрос правильному owner-у. Это три разные функции, а не один текст с переставленными заголовками.
- Формулировки вычитаны на M7: version, digest, compatibility, owner, stop condition и rollback появляются только как проверяемые элементы contract. Речь не обещает безопасность, скорость, zero downtime, автоматический data undo, успешный rollout или adoption. «Human deploy review» везде отделён от execution.
- Import-safe gate прошёл внутри <code>npm run audit:draft</code>: CLI <code>--print-revisions</code> и module export совпадают, в ревизиях нет fields <code>date</code> и <code>author</code>, все три stable slug уже существуют в archive, figures/tables/code/routes/sources и local assets найдены.
## Проход 3 — mobile visual, SVG safety и проверки
- <code>release-engineering-2024-delivery-chain.svg</code> показывает направленную цепочку commit → artifact → migration plan → rollout card и явную нижнюю границу human review / rollback draft. <code>release-engineering-2024-rollback-table.svg</code> разделяет code/artifact return point, migration review, rollout intent и evidence gate. <code>release-engineering-2024-evidence-gate.svg</code> ведёт по четырём predicates и показывает, что любое «нет» останавливает разбор.
- У каждого SVG есть собственные <code>title</code> и <code>desc</code>, а в статье — независимые alt и caption. Подписи отделяют static teaching contract от реального CI, registry, cloud, delivery log, production rollout и data recovery. В схемах нет внешнего input или поведенческих элементов.
- <code>xmllint --noout</code> для трёх SVG — PASS. Safety scan — PASS: отсутствуют <code>script</code>, <code>foreignObject</code>, <code>javascript:</code>, <code>data:image</code>, event-handler attributes, <code>image</code>, <code>href</code>, <code>url(...)</code> и внешние URL (кроме обязательного XML namespace).
- Sharp отрендерил все три final SVG на ширине **375 px**: delivery chain — 375×256, rollback table — 375×256, evidence gate — 375×269. Первый mobile review обнаружил clipping слишком длинного заголовка rollback table; заголовок сокращён до «Rollback: версия, artifact и migration», затем XML, safety scan и Sharp-render повторены. После исправления titles, cards, стрелки, stop branches, нижние boundaries и таблица читаются без clipping, overlap или горизонтального overflow.
- Финальный набор: <code>node --check</code> — PASS; <code>--verify-fixture</code> — PASS 27/27; <code>cd web &amp;&amp; npm run audit:draft -- scripts/upgrade-2024-07.mjs</code> — PASS для трёх slug и указанных объёмов; <code>xmllint</code> — PASS; SVG safety — PASS; Sharp 375 px — PASS. npm вывел существующие предупреждения о user config, но audit завершился code 0 и на проверку draft не повлиял.
- Пакет остаётся sidecar: overlay, README, queue, <code>articles.json</code> и Git не обновлялись; staging, commit и push не выполнялись. Реальные evidence collection, authorization, policy, migration rehearsal, CI, registry verification, deploy, rollout observation и data recovery требуют отдельного разрешённого процесса.
## Выпуск после трёх независимых проходов
1. **Факты и техника.** Редактор повторно проверил GitHub Changelog от 25.06.2024: создание и проверка artifact attestation разделены; SLSA v1.0 действительно опубликована как первая stable version 19.04.2023. Для Kubernetes найден технический дефект источника: публичный historical subdomain не проходит TLS-проверку. Ссылка заменена на неизменяемый первичный snapshot `c889d9b` от 14.03.2024 в официальном репозитории Kubernetes; он подтверждает, что revision создаётся при изменении Pod template, а rollback возвращает template, а не data effect. `node --check` и fixture — **PASS 27/27**.
2. **Редактура и голос.** Повторное чтение подтвердило три разные задачи: practice описывает связи релиза, mechanism — критерии и границу controlled rollback, field — диагностирует три вида mismatch. Служебный номер партии в публичный текст не попал. Основной текст проходит диапазон: **9 243**, **10 370** и **9 759** знаков; в каждом материале есть конкретная цена ошибки, таблица, фигура, пример, ограничение и следующий шаг.
3. **Визуал и выпуск.** Все SVG прошли XML и safety scan, затем были отрендерены Sharp и просмотрены на 375 px: подписи и stop-ветви читаемы, clipping отсутствует. После подключения overlay `audit:articles` подтвердил по figure/table/code example на каждый slug; registry содержит **226** уникальных ревизий. `npm run build` завершился успешно: **374** статические страницы.
В выпуск войдут только пять файлов июля, обновления registry/production README и результат этой приёмки. Изменения пользователя, черновики других месяцев и исходный `articles.json` в него не включаются.