Definition of Done и release notes
Definition of Done (DoD)
DoD (Definition of Done) — согласованный список критериев, при которых инкремент считается готовым: задачу можно закрыть, показать на demo, включить в релиз или отдать пользователям.
DoD отвечает на вопрос: можно ли считать работу завершённой без сюрпризов на prod?
Без DoD:
- "Done" значит "код написан", но без тестов и stage;
- release notes пишут в последний час;
- support узнаёт об изменении от пользователей;
- rollback — panicked hotfix.
DoD enforced в CI и code review, не только на плакате (FAQ методологии).
См. DoR — старт задачи, Scrum DoD, тестирование.
QA не "доделывает за dev". DoD описывает общий барьер качества до статуса Done. Если пункт систематически пропускается — меняют процесс или DoD на retro, а не обходят молча.
DoR и DoD
| DoR | DoD | |
|---|---|---|
| Вопрос | Можно начать? | Можно закрыть? |
| Где | Глава 1 | Эта глава |
Уровни DoD
DoD часто многоуровневый:
| Уровень | Область | Примеры критериев |
|---|---|---|
| Задача / PR | Одна фича или fix | Code review, unit tests, lint |
| Спринт / инкремент | Набор задач на demo | Deploy на stage, demo пройдено |
| Релиз | Prod | Мониторинг, rollback plan, release notes, флаги |
Задача может быть Done на уровне PR, но релиз — только когда выполнен релизный DoD.
DoD для веб-фичи
Пример команды (SPA + REST API):
Код и review
- Код в
mainчерез PR с ≥1 approve (2 для auth/PII). - Нет known P1/P2 по этой фиче в трекере.
- AI disclosure в PR, если использовался Copilot.
Тесты и CI
- Unit и integration тесты зелёные в CI.
- Покрыты AC из тикета (DoR).
- E2E на критичный happy path (если есть в проекте).
Среды
- Задеплоено на stage, QA sign-off или self-check по чек-листу.
- Миграции БД применимы up/down или документирован one-way.
- Feature за флагом off в prod, если крупная фича (глава 3).
Документация
- API (OpenAPI) и wiki обновлены.
- Release notes черновик, если user-facing.
- i18n ключи добавлены, нет hardcoded UI strings.
Наблюдаемость
- Логи и метрики для нового flow (latency, errors).
- Алерты не сломаны; новые — согласованы с on-call.
DoD для mobile (iOS / Android)
Mobile добавляет store, версии OS, offline и долгий review в сторах.
Общее с web
- PR, review, CI (unit + UI tests где есть).
- AC покрыты, stage/testflight/internal track.
Специфика mobile
| Пункт | iOS | Android |
|---|---|---|
| Мин. версия OS | В AC / Info.plist | minSdk в gradle |
| Store assets | Screenshots если UI менялся | То же |
| Push / permissions | Тексты permission strings | Runtime permissions |
| Offline | Кэш и сообщения об ошибке | То же |
| Rollback | Feature flag критичен — store rollback медленный | То же |
| Analytics | Events в аналитике | То же |
DoD релиза mobile: часто = "код в main + flag off" и отдельный DoD "включено 100% пользователей" после gradual rollout.
Одобрение App Store / Google Play — внешний gate. Внутренний DoD выполняется до отправки билда в store.
DoD для bugfix и hotfix
| Тип | DoD (минимум) |
|---|---|
| Обычный bug | STR в тикете, regression test, stage verify |
| Hotfix prod | Post-facto review ≤24 ч, RCA ticket, release notes "исправлено" |
| Security | Security review, нет disclosure details в публичных notes |
Enforcement DoD
DoD на wiki без проверки бесполезен:
| Механизм | Что блокирует |
|---|---|
| CI | Merge без green tests/lint |
| Branch protection | Merge без approve |
| Workflow | Done только из "QA Passed" |
| Release checklist | Prod deploy без release notes link |
Команда на retro: какой пункт DoD чаще всего нарушают — усилить gate или упростить DoD.
Release notes
Release notes — текст о том, что изменилось для пользователей, support и эксплуатации. Это не git log и не список PR.
Аудитории
| Аудитория | Стиль | Пример содержания |
|---|---|---|
| Конечный пользователь | Без жаргона, ценность | "Теперь можно оплатить картой в один клик" |
| Support L1 | Симптомы, обходы | "Если кнопка серая — проверьте email" |
| Admin / DevOps | Downtime, конфиги, флаги | "Миграция 042, 5 мин read-only" |
| API потребители | Breaking changes | "Поле total deprecated → amount" |
Структура release notes
- Версия и дата (и TZ/UTC для глобальных продуктов)
- Новое — ценность, не названия классов
- Исправлено — что перестало ломаться
- Изменено / breaking — миграции, API, поведение
- Известные ограничения — честно о багах не P1
- Для админов — downtime, feature flags, конфиги
Хранение: wiki, CHANGELOG.md, in-app "Что нового", email — по продукту (техписьмо).
Пример release notes (user-facing)
# ShopFlow 2.14.0 — 2026-06-20
## Новое
- Быстрая оплата сохранённой картой на экране заказа.
- Уведомление о статусе доставки в push (можно отключить в Настройках).
## Исправлено
- Корзина не обнулялась после успешного заказа (тикет #8842).
- Краш приложения при повороте экрана на Android 14.
## Изменено
- Минимальная версия iOS — 16.0 (Apple API для Wallet).
## Известные ограничения
- Быстрая оплата недоступна для B2B-аккаунтов — будет в 2.15.
## Для администраторов
- Feature flag `checkout_one_tap` — по умолчанию **off**; включение по сегментам в LaunchDarkly.
- Миграция БД `20260620_cards` — окно 02:00–02:05 UTC, read-only 2 мин.
Пример release notes (internal / DevOps)
# Release 2.14.0 — internal
## Deploy
- Helm chart app 2.14.0, image tag `v2.14.0`
- Env: `FEATURE_CHECKOUT_ONE_TAP` deprecated → LaunchDarkly flag `checkout_one_tap`
## Rollback
1. Kill switch: LD flag off
2. Helm rollback chart 2.13.x
3. DB migration irreversible — см. runbook RB-042
## Monitoring
- Dashboard: Checkout / OneTap latency p95
- Alert: error rate > 1% 5m → P2 on-call
Кто пишет release notes
| Роль | Вклад |
|---|---|
| PO/PM | Ценность, формулировки для пользователя |
| Dev | Breaking changes, техдетали, флаги |
| QA | Список verified fixes, known issues |
| Техпис | Редактура, единый tone of voice |
| Support | Review на понятность L1 |
Процесс: черновик в тикете релиза за 2–3 дня до prod, финал после stage sign-off.
ИИ может набросить черновик — факт-чек обязателен.
Release notes и feature flags
Часть фич публикуется выключенной в prod:
- в release notes: "доступно за флагом
checkout_one_tap, поэтапное включение"; - support знает, почему у части пользователей кнопки нет.
Подробно — Feature flags.
Release notes и удалёнка
Demo live не все видят. Release notes + запись demo — async-канал для EU/RU команды и support.
Связь с change management
Крупный релиз в regulated среде — change request, CAB, окно. Release notes — приложение к change ticket.
Антиpatterns release notes
| Плохо | Хорошо |
|---|---|
| "Misc fixes" | Конкретные симптомы |
| Копипаста commit messages | Перевод на язык пользователя |
| Нет breaking | Явный блок "Изменено" |
| Notes после prod | Черновик до deploy |
DoD для API-only и backend-сервисов
| Пункт | Детали |
|---|---|
| OpenAPI / protobuf | Версия и changelog |
| Contract tests | Consumer-driven при необходимости |
| Backward compatibility | Deprecation policy |
| Rate limits | Документированы |
| Stage load smoke | p95 latency baseline |
DoD для data / ML pipeline
- Schema registry / migration;
- Data quality checks (null rate, duplicates);
- Rollback dataset version;
- PII masking в логах (ИБ);
- ИИ-модели: bias check по политике продукта.
Release train и cadence
| Модель | Release notes | DoD релиза |
|---|---|---|
| Continuous (daily) | Автогeneration + edit | Automated + spot check |
| Weekly | Единый doc версии | Полный checklist |
| Bi-weekly sprint | После demo | CAB если нужно |
Локализация release notes
Продукт RU + EU:
| Язык | Канал |
|---|---|
| RU | In-app, email RU сегмент |
| EN | Global changelog |
| Internal | Один bilingual doc или два linked |
Термины — глоссарий.
Release notes для hotfix
Минимальный шаблон P1:
# Hotfix 2.13.1 — 2026-06-16
**Причина:** инцидент INC-442 — 500 на login после deploy 2.13.0
**Исправлено:** null pointer при пустом refresh token
**Действия пользователей:** не требуются, перelogin не нужен
**Для DevOps:** deploy image v2.13.1; flag unchanged
Post-mortem — отдельный doc (инциденты).
Сравнение DoD web и mobile (сводная)
| Критерий | Web | Mobile |
|---|---|---|
| Deploy speed | Минуты | Store: дни |
| Rollback | Redeploy / flag | Flag critical |
| E2E | Browser | Device farm |
| Permissions | N/A often | OS strings |
| Version skew | One tab | N old app versions |
Workshop DoD за 90 минут
- Список текущих "done means" от команды.
- Группировка: task / sprint / release.
- Что автоматизировать в CI первым.
- Шаблон release notes — один пример.
- Owner wiki + review через 6 недель.
DoD checklist — copy-paste
## Team DoD — Web feature
- PR merged, CI green, ≥1 approve
- AC verified on stage
- Tests cover AC; no P1/P2 open
- API/wiki updated
- Metrics/logs added
- Release notes draft if user-facing
- Feature flag off in prod if gradual rollout
## Team DoD — Mobile
+ TestFlight/Internal track verified
+ min OS documented
+ Store texts if permissions changed
Итоги раздела
DoD — общий барьер "готово к релизу". Release notes — мост к пользователям и support. Для web и mobile DoD различается; mobile опирается на feature flags сильнее из-за store latency.
Feature flags · Итоги · Чек-лист