8.2 KiB
P79 — сентябрь 2024: ADR / инженерные решения
Scope и source report
Пакет заменяет только три overlay-статьи:
- editorial-2024-09-practice-adr-decisions
- editorial-2024-09-mechanism-adr-decisions
- editorial-2024-09-field-adr-decisions
Исторические ссылки закреплены до сентября 2024, а не оставлены на меняющемся старом URL:
- Michael Nygard, Documenting Architecture Decisions — snapshot 22.08.2024 — первичный текст о context, decision, status, consequences и supersede.
- Nygard ADR template mirror — immutable commit 93f7e465, 18.10.2023 — закреплённая проверка формы Title, Status, Context, Decision, Consequences.
- MADR 3.0.0 template — immutable commit 97fb8ed, 09.10.2022 — status, date, decision drivers, alternatives, outcome, consequences и validation.
Все три URL проверены обычным curl -I -L --fail без --insecure, TLS bypass или авторизации: каждый завершился 200.
Факты из источников ограничены формой и lifecycle ADR. Варианты, веса, scores, owners, identifiers, signals и outcomes в P79 — только fixed synthetic in-memory objects. Они не читают и не описывают files, code, Git, CI, сеть, production, interviews или metrics.
Проход 1 — факты и техника
Проверено:
- Каждая статья называет scope ADR, alternatives, последствия, owner и reassessment вместо обещания, что record сам делает решение правильным.
- Правило supersede сформулировано безопасно: сначала proposed successor, затем human acceptance, только потом link Superseded; это не rollback implementation.
- upgrade-2024-09.mjs не импортирует filesystem или network API. Input, report и draft имеют exact-key contract; fixture проверяет unknown fields, dense arrays, forged nested values, cyclic JSON, forged draft и отсутствие external effect.
- Фикстура использует 33 assertions и не изменяет внешний state.
Команды и результат:
node --check scripts/upgrade-2024-09.mjs
PASS
node scripts/upgrade-2024-09.mjs --verify-fixture
PASS fixture: 33/33 assertions
curl -I -L --fail --silent --show-error --max-time 30 <each source URL>
200 for all 3 pinned URLs
Вердикт: PASS. Нет неподтверждённых production claim, доступ к реальным данным не встроен в учебный пример.
Проход 2 — редактура и голос
Проверено:
- Автор сентября 2024 говорит как системный практик: начинает с конкретной поломки или стоимости, отделяет evidence от assumption, называет owner и next step.
- В каждом тексте есть цепочка симптом → причина → проверка → действие, meaningful figure, HTML table, воспроизводимый example, limitations и concrete next step.
- Нет общих формул из audit blacklist; предложения не выдают synthetic score за metric или real team decision.
- Основной текст находится в диапазоне 5 000–15 000 знаков.
Команда и результат:
npm run audit:draft -- scripts/upgrade-2024-09.mjs
PASS editorial-2024-09-practice-adr-decisions: 9650 body chars
PASS editorial-2024-09-mechanism-adr-decisions: 10890 body chars
PASS editorial-2024-09-field-adr-decisions: 10934 body chars
npm напечатал известные warnings о внешних user-config store-dir, cache-dir, public-hoist-pattern; команда завершилась с кодом 0, конфигурация не менялась.
Вердикт: PASS. Объём, problem/cost в первых двух абзацах и тон автора соответствуют редакционному стандарту.
Проход 3 — визуал и выпуск
Проверено:
- Три SVG автономны и содержат meaningful title, description, alt и caption в статьях.
- В source нет script, foreignObject, javascript:, data:image или event handlers.
- Все три схемы вручную открыты после рендера на ширине 375 px; длинные подписи разбиты, нет обрезанных строк.
- Registry, README, articles.json, build, staging, commit и push намеренно не затрагивались.
Команды и результат:
xmllint --noout public/assets/editorial/2024/adr-decisions-2024-decision-flow.svg \
public/assets/editorial/2024/adr-decisions-2024-alternatives-matrix.svg \
public/assets/editorial/2024/adr-decisions-2024-reassessment-loop.svg
PASS
rg -n -i '<(script|foreignObject)\b|javascript:|data:image|(?:^|[[:space:]])on[a-z]+=' <three SVG paths>
PASS (no matches)
Sharp resize width=375
PASS decision-flow: 375x583
PASS alternatives-matrix: 375x500
PASS reassessment-loop: 375x510
Вердикт: PASS. Общий build не запускался по ограничению пакета. Пакет остаётся draft: его не stage, commit или publish.
Выпуск после трёх независимых проходов
- Факты и техника. Редактор повторно открыл все три источника без TLS bypass. Оригинал Nygard сегодня доступен, но уже менялся после сентября 2024; поэтому в статье остаётся снимок Wayback от 22.08.2024 как исторически закреплённая копия первичного текста. Immutable templates подтвердили поля status/context/decision/consequences и decision drivers/options/outcome/validation.
node --checkи закрытая fixture — PASS 33/33. - Редактура и голос. Из публичной прозы удалены служебное имя партии
P79и нерелевантная формулировка «AWS-like generic process»; они заменены словами «материал», «учебная модель» и ясной границей универсального процесса. Три статьи решают разные задачи: запись решения, сравнение альтернатив и reassessment. После правки объёмы — 9 659, 10 869, 10 955 знаков. - Визуал и выпуск. XML/safety scan, Sharp-render и ручной просмотр трёх SVG на 375 px подтвердили читаемость контраста, стрелок, матрицы и подписей. После подключения overlay
audit:articlesподтвердил по одной figure, table и code example на каждый slug; registry содержит 229 уникальных ревизий.npm run buildпрошёл: 374 статические страницы.
В выпуск включаются только пять файлов сентября, обновления registry/production README и эта приёмка. Пользовательские изменения, черновики августа и октября, а также исходный articles.json в него не включаются.