Files
huncode fa6d1c3eac
Build and deploy / deploy (push) Successful in 15s
revise May 2025 engineering automation articles
2026-07-31 17:48:51 +03:00

17 KiB
Raw Permalink Blame History

P87 — май 2025: автоматизация инженерной рутины без массовой ошибки

Область draft-пакета

Пакет заменяет только три overlay-статьи:

  • editorial-2025-05-practice-engineering-automation — «Автоматизация инженерной рутины без массовой ошибки».
  • editorial-2025-05-mechanism-engineering-automation — «Почему preview, approval и audit trail не доказывают безопасный change».
  • editorial-2025-05-field-engineering-automation — «Полевой маршрут: автоматизация без массового неверного change».

Единственный исполняемый артефакт — web/scripts/upgrade-2025-05.mjs. Все operation cards, target ids, selector ids, digests, authority levels, approval cards, timestamps, execution receipts, audit records, verification reports, stop codes и rollback plans в нём — fixed synthetic in-memory значения. Скрипт не читает и не пишет files, Git, сеть, CI, clock, telemetry, production, cloud или real API и не выполняет реальный change.

simulateSyntheticExecution записывает только model receipt с productionEffect: not-attempted. Его immutable audit record заморожен через Object.freeze внутри модуля; это не durable, append-only или tamper-proof storage. stopAndPlanSyntheticRollback создаёт только новый plan с planned-only-not-executed; он не наследует approval и не выполняет rollback.

Registry, README, очередь, articles.json, app-страницы, full build, Git staging, commit и push намеренно не менялись.

Исследование и историческая граница

Проверка URL выполнена 31.07.2026 обычными HTTPS-запросами curl -L --fail / curl -I -L --fail, без TLS bypass и без авторизации. HTTP 200 получены для всех трёх закреплённых источников. Текущая доступность не заменяет историческую границу: все ссылки ведут на immutable commit, существовавший к маю 2025.

Источник Историческое закрепление Узко подтверждаемое утверждение Граница утверждения
Terraform plan commit 898e397ebaefb4d0c363b7332b3ba184b8852162; tag v1.10.5; commit date 22.01.2025 terraform plan сам не выполняет proposed changes; speculative plan не имеет намерения apply, а change target system между early plan и final apply способен изменить final effect. Не задаёт универсальный protocol approval, audit storage или rollback и не подтверждает correct change в другой системе.
GitHub Docs: environments immutable commit 6a92295d73cd86b37a810a87f45e7deb21d10a0f, 31.01.2025 Job, который ссылается на environment, ждёт protection rules и не получает environment secrets до их прохождения; approval и bypass имеют отдельные правила. Описывает GitHub Actions environment в этой версии, не семантику diff, независимость reviewer, полноту preview или безопасность другого runner.
Kubernetes kubectl apply immutable commit c889d9b2510bba78dbb527a79b8e2099b16f3d67, 14.03.2024 --dry-run=client печатает object без отправки; --dry-run=server отправляет server-side request без persistence ресурса. Не обещает, что поздний persistent apply увидит такое же state или policy, и не описывает другой инструмент.

Вывод автора — «preview, approval и audit trail отвечают на разные вопросы» — не приписан как гарантия ни Terraform, ни GitHub Actions, ни Kubernetes. Он следует из разнесённых contracts учебной модели.

Проход 1 — факты, историческая граница и техника

Проверена модель.

  • previewSyntheticAutomation принимает только exact fixed operation card: operation, selector, dense targets, target digest, proposed change и requested authority.
  • requestSyntheticApproval отдельно проверяет exact preview, authority id, allowed selector и maximum targets.
  • approveSyntheticOperation связывает operation id, preview digest, target digest и authority id. Approval с другим target digest останавливается до simulation.
  • simulateSyntheticExecution создаёт только in-memory receipt и audit record без real external effect.
  • verifySyntheticExecution проверяет только exact synthetic receipt и возвращает requires-external-verification-not-performed; он не читает target и не объявляет production state проверенным.
  • stopAndPlanSyntheticRollback требует trusted receipt/report и возвращает новый rollback plan, а не command. Для реального rollback нужны новый scope, authority, preview и approval.

Проверены отрицательные ветки.

Случай Где закрывается путь Ожидаемый результат
Unknown, extra или missing operation field preview contract fail-closed, productionEffect: not-attempted
Forged target digest exact fixed card comparison untrusted-or-unknown-operation-card
Three targets при authority limit два authority gate stop-scope-exceeds-authority-limit до approval
Forged authority card authority gate forged-or-wrong-authority-card
Approval A+C для preview A+B approval binding stop-approval-does-not-bind-preview-target-and-authority
Sparse/cyclic card или receipt canonical comparison reject без exception и без execution
Forged audit record verification entry untrusted-or-forged-synthetic-audit-receipt
Forged verification report stop/rollback boundary нет rollback plan для недоверенного input

Fixture проверяет exact contracts и negative branches; она не проверяет identity, durable storage, external state, real permissions, live policy, network races или криптографические свойства digest.

Вердикт прохода 1: пройдено. Источники ограничены своим содержанием и датированы до мая 2025; пример не выдаёт in-memory model за production runner.

Проход 2 — редактура, М8 и плотность

Тон соответствует М8: автор ведёт от наблюдаемой цены ошибки к ownership, contracts и проверяемому следующему шагу. Техническая речь строится по схеме «симптом → причина → проверка → действие» без универсальных обещаний и без анахронизмов после мая 2025.

Статья Проблема и цена ошибки в первых двух абзацах Основной текст Практический артефакт Проверяемый финал
practice Массовая рутина масштабирует неверный selector; цена — неверное state, восстановление и потеря истории запуска. 10 982 знака operation card, цепочка gates, 31-assertion fixture Подменить target digest или добавить target и получить stop до write.
mechanism Green pipeline скрывает разрыв между proposal, authority, approval, audit и observed state; цена — неверный scope и рискованный rollback. 10 983 знака матрица доказательств, authority/approval contracts Удалить binding field и показать, что старый approval не переносится на новый scope.
field Широкий selector и stale inventory создают массовый change; цена — частичный state и повторный опасный запуск. 10 982 знака checklist, fail-closed example, rollback boundary Запустить three-case test: bounded, over-scope, mismatched approval.

Редакторская вычитка:

  • Каждая статья прямо называет проблему и цену ошибки в первых двух <p>; это проверяет усиленный audit.
  • В каждой статье есть table, figure с meaningful alt и caption, компактный reproduciable example, ограничения и следующий проверяемый шаг.
  • Preview/dry-run, authority, approval, audit trail, verification и rollback не названы взаимозаменяемыми. Текст отдельно фиксирует ограничения каждого барьера.
  • Все body лежат в диапазоне 5 000–15 000 и в целевом диапазоне 8–11 тыс. знаков; после сокращения сняты повторы о review, audit и rollback без потери negative branches.
  • Fixed synthetic labels явно отделены от фактов источников; immutable не выдан за свойство внешнего хранилища.

Вердикт прохода 2: пройдено. Статьи стали короче после саморевью, сохранив таблицы, examples, ограничения, owner и final action.

Проход 3 — SVG, fixture и усиленный audit draft

Проверены три собственных SVG:

Asset Смысл Итог 375 px
engineering-automation-2025-preview-approval-rollback.svg Семь переходов и красная stop/rollback-plan ветка. Footer сокращён после первого render; все карточки и подписи читаемы.
engineering-automation-2025-authority-matrix.svg Authority limit, target mismatch, execute receipt и boundary verification. Правый столбец и fail-closed footer сокращены после первого render; таблица читаема.
engineering-automation-2025-dry-run-evidence-loop.svg Evidence loop от preview до observed verification и нового plan. Footer сокращён после первого render; пунктирный возврат к новому plan виден.

Последовательность проверок:

  • node --check scripts/upgrade-2025-05.mjs — PASS.
  • node scripts/upgrade-2025-05.mjs --verify-fixture — PASS, 31/31 assertions.
  • npm run audit:draft -- scripts/upgrade-2025-05.mjs — PASS для всех трёх slugs, включая requirement о цене ошибки в первых двух paragraphs и диапазон 5 000–15 000.
  • xmllint --noout — PASS для трёх SVG.
  • SVG safety scan — чисто: нет script, foreignObject, javascript:, data:image и event-handler attributes.
  • Sharp render на ширине 375 px и ручной visual review — PASS после сокращения трёх footer/column labels.

Full build и registry audit намеренно не запускались. Registry, README, queue, articles.json, app-files и Git остаются вне scope P87.

Вердикт прохода 3: пройдено для самостоятельного draft-пакета. Публикация не выполнялась.

Выпуск после независимой приёмки

1. Факты и техника

Редактор повторно проверил первичные источники по immutable HTTPS-revisions. Terraform commit 898e397ebaefb4d0c363b7332b3ba184b8852162 от 22 января 2025 подтверждает различие speculative plan и final apply, включая риск изменения target system между ними. GitHub Docs commit 6a92295d73cd86b37a810a87f45e7deb21d10a0f от 31 января 2025 подтверждает environment protection rules, недоступность secrets до их прохождения и отдельную настройку bypass. Kubernetes website commit c889d9b2510bba78dbb527a79b8e2099b16f3d67 от 14 марта 2024 подтверждает границу client/server dry-run. Ни один из фактов не расширен в текстах до гарантии безопасности произвольного runner.

Заново запущены node --check, fixture (31/31) и усиленный draft audit. Ручной запуск всех трёх опубликованных code examples вернул ожидаемые статусы: positive path остаётся simulated execution без внешнего change, over-scope и lower-authority cases останавливаются до approval. Три статьи содержат 10 982, 10 983 и 10 982 знака. Fixed synthetic fixture сознательно не моделирует identity, срок approval, durable audit store и observed production state; статьи называют эти поля требованиями реального процесса, а не свойствами модели.

2. Редактура и голос автора

Полностью прочитаны practice, mechanism и field case. Первые два абзаца каждой формулируют наблюдаемую проблему и цену массовой ошибки. Текст выдерживает прагматичный маршрут «симптом → причина → проверка → действие»: отдельно названы proposal, scope, authority, approval, audit trail, observed verification и rollback plan. В статьях нет вымышленных production-инцидентов, фактических прав или внешних операций; термины получают технический контекст, а следующие шаги воспроизводимы на одной ограниченной операции.

3. Визуал и выпуск

Все SVG прошли XML и safety scan. Независимый Sharp render на ширине 375 px показал читаемые карточки, строки матрицы и stop-ветки без обрезания; figure alt и captions объясняют, что именно доказывает диаграмма. После подключения overlay целевой audit подтвердил по одной figure, таблице и code example у practice, по одной figure, двум таблицам и одному примеру у mechanism и field. Registry содержит 256 уникальных ревизий, git diff --check чист, production build успешно сгенерировал 374 страницы.