Files
huncode 04dbb60f16
Build and deploy / deploy (push) Successful in 18s
revise August 2024 feature flag articles
2026-07-31 16:27:37 +03:00

13 KiB
Raw Permalink Blame History

P78 — август 2024: feature flags — draft review

Граница пакета

P78 заменяет только три августовских черновика через overlay web/scripts/upgrade-2024-08.mjs:

  • editorial-2024-08-practice-feature-flags — «Фича-флаг как контракт выпуска: как не оставить переключатель навсегда»;
  • editorial-2024-08-mechanism-feature-flags — «Где принимать решение флага: server, client и журнал exposure»;
  • editorial-2024-08-field-feature-flags — «Выключить флаг — не значит удалить риск: rollout, rollback и cleanup».

Скрипт экспортирует только revisions; web/data/articles.json не менялся. В пакете нет registry, README, статуса, staged changes, commit или push. Фикстура работает только с versioned fixed synthetic objects в памяти: она не читает и не пишет flag store, файлы, сеть, часы, CI, telemetry, user data или production.

Source report и историческая граница

Источник Закрепление и факт, используемый в тексте Ограничение
OpenFeature Specification v0.6.0 release, 16.05.2023 Датированный versioned release, доступный к августу 2024; включает provider events, initialization и shutdown. Не доказывает одинаковую реализацию provider и не задаёт exactly-once для какого-либо события.
OpenFeature v0.6.0 — Flag Evaluation API Раздел versioned release: typed evaluation с flag key, default value и optional evaluation context; abnormal execution возвращает default. API-контракт, не policy TTL, секретов, rollout или удаления флага.
OpenFeature v0.6.0 — Evaluation Context Раздел versioned release: targeting key идентифицирует subject, а context имеет определённый merge order. Раздел experimental; не обещает distributed snapshot или непрерывную консистентность когорты.
OpenFeature v0.6.0 — Events Раздел versioned release: provider readiness, error, configuration changed и stale events. Раздел experimental; это не бизнес-exposure и не delivery contract.
Unleash Feature Toggles — immutable commit 341703978af887a364a9d872d9e3a906ae4dbbcb, 21.08.2024 Неизменяемый первичный Git-снимок в пределах августа 2024: type и description, activation strategies по environment, disabled toggle evaluates false. Не задаёт owner, expiry, наблюдение, метрики или cleanup process произвольной команды.
Unleash Front-end API — immutable commit 4ae65d6d5e095d5c056ae63c60afcb09dd6cfe5b, 24.05.2024 Неизменяемый первичный Git-снимок до августа 2024: Front-end API, FRONTEND token, CORS и refresh interval с random offset для Unleash 4.18+. Не является переносимой гарантией момента refresh, client-side evaluation или единой конфигурации у всех клиентов.

Исторические меняющиеся документы закреплены либо датированным релизом v0.6.0, либо точным immutable Git commit. Архивные URL и старый домен документации Unleash из P78 удалены.

Обязательная проверка ссылок

Перед выпуском выполнен обычный HTTPS GET для всех шести URL выше:

curl -L --fail --silent --show-error --output /dev/null \
  --write-out '%{http_code} %{url_effective}\n' URL

Команда запускалась без -k/--insecure, без TLS bypass, без заголовка авторизации, credentials или cookie jar. Результат для каждого URL — 200; redirect ведёт на тот же публичный GitHub URL. Проверка выполнена 31.07.2026 для доступа к закреплённым историческим источникам, а не как утверждение об их текущем содержимом.

Проход 1 — факты и техника

  • У каждого материала первые два абзаца называют проблему и цену: долговая ветвистость release-флага; неясный authoritative evaluator и лишний context; false/100% без удаления runtime dependency.
  • Цепочка в текстах одинаковая и проверяемая: «симптом → причина → проверка → действие». Это не рекламный нарратив и не runbook, притворяющийся production-инструментом.
  • В mechanism-материале строго разделены evaluation, exposure candidate, render confirmation и domain effect. Provider events OpenFeature не выданы за бизнес-события. Ни одна статья не обещает exactly-once; при необходимости назван idempotency key на стороне потребителя.
  • В practice-материале owner, expiry и deletion path честно названы командной policy, а не возможностью OpenFeature или Unleash.
  • В field-материале 0/5/25/100, сигналы и сценарии — fixed synthetic model. Это не трафик, SLO, incident, пользовательские данные, интервью или production-метрики.
  • Фикстура принимает только канонический fixed synthetic input. Она отвергает unknown keys, file/network/clock/telemetry/production markers, неверную версию и scope, разрежённые массивы, подменённые карточки/решения, циклический input/report и forged cleanup draft. Отдельная проверка доказывает, что некорректный input не меняет frozen fixed record.

Проход 2 — редактирование и голос

Автор августа 2024 — системный практик: короткие технические абзацы, конкретный контекст и явная граница вывода. В каждом тексте есть постановка проблемы в первых двух абзацах, таблица решения, компактный воспроизводимый код или конфиг, ограничения и один следующий проверяемый шаг.

Slug Основное тело Редакторский контроль
editorial-2024-08-practice-feature-flags 9 586 знаков Контракт флага проходит от owner и audience к наблюдению и removal; сигнал не назван доказательством эффекта.
editorial-2024-08-mechanism-feature-flags 11 878 знаков Граница server/client, cohort key и event semantics разобраны без магических гарантий provider.
editorial-2024-08-field-feature-flags 12 045 знаков Rollout, rollback и cleanup разведены; 100% и disabled явно не названы завершением удаления.

Диапазон 5 000–15 000 знаков соблюдён для всех трёх тел. Английские термины оставлены только там, где они обозначают API, контракт или артефакт; рядом дано техническое значение, а не рекламная формулировка.

Проход 3 — визуал и выпуск

Три SVG нарисованы вручную; в них нет <script>, <foreignObject>, javascript:, data:image или event handlers. После первого Sharp-render на 375 px длинные подписи cleanup/delivery были разбиты на короткие строки; затем сделан повторный визуальный просмотр всех трёх мобильных PNG.

Артефакт Смысл Sharp-render на ширине 375 px
feature-flags-2024-decision-tree.svg Карточка контракта, граница решения, наблюдение и cleanup path. 375×552
feature-flags-2024-rollout-timeline.svg Server/client decision flow и пунктирная граница delivery. 375×510
feature-flags-2024-cleanup-gate.svg Synthetic rollout, rollback и отдельный cleanup gate. 375×573

Выполненные команды и результаты:

node --check web/scripts/upgrade-2024-08.mjs
exit 0

node web/scripts/upgrade-2024-08.mjs --verify-fixture
PASS fixture: 35/35 assertions

(cd web && npm run audit:draft -- scripts/upgrade-2024-08.mjs)
PASS editorial-2024-08-practice-feature-flags: 9586 body chars
PASS editorial-2024-08-mechanism-feature-flags: 11878 body chars
PASS editorial-2024-08-field-feature-flags: 12045 body chars

xmllint --noout <three P78 SVG files>
exit 0

rg -n -i '<(script|foreignObject)\\b|javascript:|data:image|[[:space:]]on[a-z]+[[:space:]]*=' <three P78 SVG files>
exit 1, no matches (expected clean result)

Sharp render of all three SVG files at width 375
exit 0; 375×552, 375×510, 375×573

Полная база не собиралась: это явно оставлено главному агенту после интеграции. P78 не staged, не committed и не pushed.

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

  1. Факты и техника. Редактор повторно сверил OpenFeature v0.6.0 release и raw tagged specification: typed evaluation, optional context, default value при abnormal execution, experimental context/events и их границы совпадают с текстом. Два Unleash immutable commits подтвердили environment strategies, false для disabled toggle, Front-end API, FRONTEND token, CORS и refresh с random offset. node --check и fixture — PASS 35/35.
  2. Редактура и голос. В публичном field-материале служебное имя партии P78 заменено на «учебная фикстура». Остальные три текста проверены на разные задачи: release contract, server/client boundary и cleanup. Объёмы после вычитки — 9 586, 11 878, 12 049 знаков; каждое решение начинает с наблюдаемой цены и заканчивается проверяемым действием.
  3. Визуал и выпуск. Три SVG прошли XML/safety scan, повторный Sharp-render и ручной просмотр на 375 px: decision tree, delivery boundary и cleanup gate остаются читаемыми. После календарного подключения перед сентябрём audit:articles подтвердил для каждого slug 1 figure, 2 table и 1 code example; registry содержит 232 уникальные ревизии. npm run build завершился успешно: 374 статические страницы.

В выпуск включаются только пять файлов августа, обновления registry/production README и эта приёмка. Пользовательские изменения, черновики октября/ноября и исходный articles.json исключены.