14 KiB
14 KiB
P77 · 2024-07 · Инженерия релиза — три самостоятельных прохода ревью
Рамка sidecar-пакета
- Archive slugs:
editorial-2024-07-practice-release-engineering,editorial-2024-07-mechanism-release-engineering,editorial-2024-07-field-release-engineering. - Голос: M7, июль 2024. Каждая статья начинает с конкретной версии, artifact, migration plan и rollout card, называет цену расхождения и ведёт по короткой связке «симптом → причина → проверка → действие». Текст не объявляет fixed fixture реальной поставкой, registry, pipeline, CI run, deploy, облаком, журналом доставки или production result.
- Созданы ровно пять sidecar-файлов: этот review, один import-safe script и три локальных SVG. Overlay, README, очередь,
articles.json, 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! датирован 19.04.2023 и фиксирует первый stable SLSA v1.0. В пакет взята узкая дисциплина: artifact, provenance и verification expectations — разные сущности; источник не даёт claim о конкретной сборке или policy команды.
- GitHub Changelog: Artifact Attestations is generally available датирован 25.06.2024. Он показывает, что attestation для build artifact и её verification — отдельные операции. В статьях это служит исторической опорой для разделения artifact, statement и approval, а не заявлением, что sidecar создаёт или проверяет attestation.
- Kubernetes documentation: Deployments, snapshot 14.03.2024 — неизменяемый снимок первичной ветки release-1.30, существовавший до конца июля 2024. Из него использована одна граница: Deployment revision и rollback относятся к Pod template. Ни текст, ни fixture не приравнивают такой rollback к отмене migration, data effect или операции в чужой среде.
- Модель задаёт четыре fixed case.
fixed-aligned-releaseсвязывает release2024.07.0, source commit, artifact digest, compatible migration и proposed rollout card. Три negative cases раздельно показывают artifact, который не binds commit; migration, нацеленную на2024.07.1; и rollout card с другим digest. Они не описывают реальную delivery system. inspectSyntheticReleaseEvidence()сравнивает exact relations: version commit/artifact/rollout,artifact.sourceCommitId, migration target и compatibility, requested digest и migration version rollout card, а также versioned return point. False relation ведёт к точномуstop-and-reconcile-records, не к retry и не к deploy.- Input contract закрыт: marker
synthetic, exact scope,fixed-memory-onlymode и known case id. CI-like/deploy-like extra fields, другой scope, режим чтения registry и unknown case отдельно отклоняются. Во всех report и plan явно записаныnot-read,not-runиnot-attemptedдля Git, registry, CI, deploy, cloud, production, delivery logs, filesystem и network. - План повторно строит canonical report по embedded case и сравнивает весь object. Подмена decision, record или добавление deployment-like field дают отказ.
draftSyntheticControlledRollback()выдаёт только versioned return draft для aligned case; чужой action и stop case не проходят. Rollback draft прямо хранит boundarydoes-not-reverse-data-and-requires-separate-human-review. - Технические проверки:
node --check web/scripts/upgrade-2024-07.mjs— PASS;node web/scripts/upgrade-2024-07.mjs --verify-fixture— 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 или следующего шага.
audit:draftпосчитал основной текст без раздела 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 прошёл внутри
npm run audit:draft: CLI--print-revisionsи module export совпадают, в ревизиях нет fieldsdateиauthor, все три stable slug уже существуют в archive, figures/tables/code/routes/sources и local assets найдены.
Проход 3 — mobile visual, SVG safety и проверки
release-engineering-2024-delivery-chain.svgпоказывает направленную цепочку commit → artifact → migration plan → rollout card и явную нижнюю границу human review / rollback draft.release-engineering-2024-rollback-table.svgразделяет code/artifact return point, migration review, rollout intent и evidence gate.release-engineering-2024-evidence-gate.svgведёт по четырём predicates и показывает, что любое «нет» останавливает разбор.- У каждого SVG есть собственные
titleиdesc, а в статье — независимые alt и caption. Подписи отделяют static teaching contract от реального CI, registry, cloud, delivery log, production rollout и data recovery. В схемах нет внешнего input или поведенческих элементов. xmllint --nooutдля трёх SVG — PASS. Safety scan — PASS: отсутствуютscript,foreignObject,javascript:,data:image, event-handler attributes,image,href,url(...)и внешние 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.
- Финальный набор:
node --check— PASS;--verify-fixture— PASS 27/27;cd web && npm run audit:draft -- scripts/upgrade-2024-07.mjs— PASS для трёх slug и указанных объёмов;xmllint— PASS; SVG safety — PASS; Sharp 375 px — PASS. npm вывел существующие предупреждения о user config, но audit завершился code 0 и на проверку draft не повлиял. - Пакет остаётся sidecar: overlay, README, queue,
articles.jsonи Git не обновлялись; staging, commit и push не выполнялись. Реальные evidence collection, authorization, policy, migration rehearsal, CI, registry verification, deploy, rollout observation и data recovery требуют отдельного разрешённого процесса.
Выпуск после трёх независимых проходов
- Факты и техника. Редактор повторно проверил 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. - Редактура и голос. Повторное чтение подтвердило три разные задачи: practice описывает связи релиза, mechanism — критерии и границу controlled rollback, field — диагностирует три вида mismatch. Служебный номер партии в публичный текст не попал. Основной текст проходит диапазон: 9 243, 10 370 и 9 759 знаков; в каждом материале есть конкретная цена ошибки, таблица, фигура, пример, ограничение и следующий шаг.
- Визуал и выпуск. Все 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 в него не включаются.