Consumer Compatibility Checklist By Release Unit — Проверка готовности consumers к эволюции async contracts
Версия: 1.0
Дата: 24.04.2026
Статус: Готов к обсуждению
Назначение документа
Этот документ фиксирует первый release-unit-aware checklist для проверки consumer compatibility при изменении async event contracts.
Его задача — определить:
- что именно должны проверять consumers перед выпуском новой event version или schema-family change;
- какие проверки общие для всех release units, а какие зависят от доменного контура;
- как compatibility readiness связывается с replay, DLQ, observability, version windows и operator impact;
- как превратить policy и matrices в практический gate для release discipline.
Документ не заменяет release plan или schema policy. Он является execution checklist, по которому можно принимать решение, готов ли конкретный release unit к эволюции async contracts.
Опорные документы
- Implementation Ready Breakdown — Первые release units, execution slices и порядок практической реализации
- Version Evolution Policy For Async Event Contracts — Правила версии, совместимости и replay-дисциплины
- Retry DLQ Replay Matrix By Schema Family — Исполнительная матрица доставки, повторов и восстановления
- Schema Draft Package For Top Critical Events — Первый полуформальный schema-layer для критичных async событий
- JSON Schema Like Field Catalogs For Top Critical Events — Полуформальные field catalogs для критичных async событий
- Webhook Compatibility Checklist For External Async Notifications — Границы внешних async уведомлений и их совместимости
- Producer Readiness Checklist For Async Contract Changes — Проверка готовности producers к безопасному выпуску изменений async contracts
- Channel Catalog Drafts By Release Unit — Первые channel families, producers, consumers и delivery expectations
- Release Engineering And Migrations — Релизы, совместимость и эволюция схем
- Observability And Incident Response — Наблюдаемость и реагирование на инциденты
Почему Этот Документ Нужен Отдельно
После появления:
- version evolution policy;
- retry/DLQ/replay matrix;
- schema drafts;
уже недостаточно просто иметь хорошие правила “в теории”.
Команде нужен практический question-set:
- consumer вообще поддерживает новую version?
- умеет ли он безопасно игнорировать новые optional fields?
- умеет ли он не сломаться на новых codes?
- корректно ли он ведёт себя при replay и DLQ scenarios?
- есть ли у него observability на mismatch and failure?
Без этого release discipline остаётся декларативной.
Главный Принцип
Producer change не считается готовым к выпуску, пока critical consumers не прошли compatibility checklist для своего release unit.
Ключевая идея:
compatibility must be demonstrated, not assumed.
Общий Checklist Для Всех Release Units
Перед выпуском change в async contract consumers должны подтвердить:
- Consumer knows supported
event_versionandschema_family. - Consumer behavior on unknown optional fields is safe.
- Consumer behavior on unknown bounded codes is explicit and observable.
- Consumer preserves idempotency semantics under retry.
- Consumer does not reinterpret old fields with new meaning.
- Consumer logs version/schema mismatch in structured form.
- Consumer produces operator-visible signal on terminal failure or DLQ path.
- Replay of historical events for this family has been assessed.
- Compatibility window for old and new versions is documented.
- Rollback or forward-fix stance is known.
RU-2 Supplier Intake And Canonicalization
Relevant Families
canonical-change- intake-related queue/job contracts
Consumer Compatibility Checklist
- Consumer can process old and new canonical change payloads without losing entity identity.
- Consumer does not assume full snapshot when contract remains reference-heavy.
- Consumer preserves ordering assumptions only at documented entity scope.
- Replay path for normalization/canonical changes has been tested against consumer logic.
- Consumer exposes mismatch between payload shape and mapping/governance expectations.
- DLQ/quarantine path is visible to operators.
- Consumer does not silently materialize broken canonical updates into downstream offer state.
RU-3 Offer And Publication
Relevant Families
offer-publication- projection rebuild jobs/signals
Consumer Compatibility Checklist
- Consumer understands current
publication_state,integrity_state,freshness_statesemantics. - New suppression reason codes do not silently downgrade to “safe publish”.
- Consumer does not require hidden governance internals if contract says payload is bounded.
- Projection consumer can rebuild from replay without producing duplicate or stale external visibility.
- Publication mismatch is observable as incident/alert, not just local log noise.
- DLQ on publication consumers is operator-visible and linked to affected surface scope.
- Consumer compatibility has been checked for scoped replay by entity/surface.
RU-4 Commercial And Quote
Relevant Families
quote-lifecycle
Consumer Compatibility Checklist
- Consumer understands current
quote_statevalues and safe fallback for unknown future codes. - Consumer does not confuse
quote.invalidatedwith harmless informational signal. - Consumer preserves difference between indicative context and quoted promise.
- Consumer handles newly added optional context fields without breaking booking guard.
- Replay of quote events has been assessed for repricing and UI drift impact.
- Quote expiry/invalidation failures are observable by version and consumer.
- DLQ path for quote consumers cannot leave stale quote truth silently alive.
RU-5 Booking Commit
Relevant Families
booking-transitions
Consumer Compatibility Checklist
- Consumer distinguishes
booking.confirmedandbooking.unknown.external.statewithout ambiguity. - New optional fields do not weaken support or incident semantics.
- Consumer does not treat unknown bounded code as safe success.
- Recovery jobs and domain event consumers keep separate logic and idempotency behavior.
- Replay of booking events is explicitly reviewed and gated.
- Mismatch between event semantics and support-facing state is observable immediately.
- DLQ on booking consumers is escalated as incident-grade signal.
RU-6 Post-Booking And Clearing
Relevant Families
post-booking-casesettlement-reconciliation
Consumer Compatibility Checklist
- Service-case consumer preserves case ownership and SLA semantics across versions.
- Financial consumer preserves strict distinction between booking truth and settlement/reconciliation truth.
- Consumer does not blindly retry duplicate-sensitive financial processing.
- New optional fields do not alter discrepancy meaning or clearing effect silently.
- Replay of settlement/reconciliation families has explicit finance review stance.
- DLQ on settlement or reconciliation path is visible to finance/ops contours.
- Consumer version mismatch on financial events is treated as serious operational risk, not warning-level noise.
RU-7 Controlled External Surface
Relevant Families
usage-governance- externally visible integration signals derived from internal families
Consumer Compatibility Checklist
- Gateway/enforcement consumer correctly handles current
governance_stateandenforcement_class. - Unknown future governance codes do not default to permissive behavior.
- Consumer can ignore additive optional fields without losing enforcement correctness.
- Compatibility window for partner-facing behavior is documented.
- Version mismatch is observable in external-surface operations.
- DLQ or enforcement failure produces operator-visible contradiction signal.
- Replay of governance signals is evaluated for tenant-facing consequence drift.
Cross-Cutting Replay Checklist
Для любой release unit change необходимо подтвердить:
- Historical replay affected or not affected?
- If affected, which consumers were revalidated?
- Can replay produce different external or support-facing outcome?
- Are replay flows observable separately from live flows?
- Is operator/finance/support escalation needed for replay of this family?
Cross-Cutting DLQ Checklist
Для любой release unit change необходимо подтвердить:
- What pushes consumer into DLQ?
- Is DLQ terminal state observable?
- Who owns DLQ triage?
- Can DLQ accumulation create false-safe platform state?
- Is there a documented recovery path from DLQ back to valid processing?
Cross-Cutting Version Window Checklist
Для любой release unit change необходимо подтвердить:
- Which old versions remain supported during overlap?
- Which consumers are lagging?
- How long does compatibility window remain open?
- What telemetry proves old/new version coexistence safely?
- What is retirement condition for old version?
Release Gate Use
Этот checklist должен использоваться как release gate в следующих случаях:
- schema-family change;
- event_version bump;
- new bounded code introduction in critical families;
- replay-sensitive consumer logic change;
- new consumer onboarding on high-value family.
What Must Stay Out Of Scope
Пока не нужно:
- превращать checklist в low-level QA test cases;
- описывать every implementation detail by runtime language;
- считать, что one release unit checklist covers all future maturity stages.
Что Должно Появиться Следом
Следующий практический слой после этого документа:
- JSON Schema Like Field Catalogs For Top Critical Events — Полуформальные field catalogs для критичных async событий
- JSON-Schema-like field catalogs for top critical events;
- Webhook Compatibility Checklist For External Async Notifications — Границы внешних async уведомлений и их совместимости
- Producer Readiness Checklist For Async Contract Changes — Проверка готовности producers к безопасному выпуску изменений async contracts
- release-gate templates for async contract changes.
Этот документ делает async compatibility operationally checkable и закрывает важный gap между policy, matrix и реальным выпуском изменений.
Уточнение под Фазы 4–6 (28.04.2026)
Consumer compatibility checklist должен покрывать каноничные новые domain events фаз 4–6:
- Booking state transitions (14 каноничных) — consumer обязан корректно обрабатывать
unknown_external_state; - Payment events — consumer обрабатывает
payment.intent.*,payment.refund.*,payment.chargeback.*; - Tour saga events — consumer обрабатывает saga compensation flow;
- Webhook signing — обязательная HMAC verification (см. security-architecture.md);
- Tier-зависимое certification (см. api-as-product.md).
Каноничные имена событий per домен — initial-event-taxonomy.md.
Связь с release engineering → release-engineering-and-migrations.md, уточнение под Фазы 4–7 (release gates с error budget check).
Уточнение выполнено через no-destruction.