Behavior contract перед зміною source state
Міграція має зберігати не лише happy-path output. Контракт поведінки охоплює inputs, outputs, errors, side effects, порядок і timing там, де вони спостережувані, idempotency, retries, persistence та recovery behavior.
Контракт не означає, що implementation або внутрішня структура залишаються незмінними. Він визначає, що саме потрібно порівняти між source і target та яке відхилення потребує рішення owner.
Пофазний migration plan
| Фаза | Evidence gate | Рішення | Rollback/hold |
|---|---|---|---|
| Discovery | source state і scope відтворювані | proceed до analysis | hold при критичних unknowns |
| Analysis | changelog, graph і matrix мають anchors | обрати pilot | звузити scope або hold |
| Pilot | bounded slice і behavior checks | перевірити target hypothesis | повернутися до source checkpoint |
| Verification | focused + contract checks | expand або rework | rollback при discrepancy |
| Expand / hold | risk gate і owner decision | збільшити охоплення або зупинити | disable/rollback за процедурою |
| Retirement | exit criteria і migration evidence | видаляти старий path лише після доказів | залишити coexistence |
Поля фази, які не можна пропустити
- одна bounded scope та відповідальний owner;
- конкретний evidence gate, а не загальне «перевірити»;
- exit criteria, які можна спостерігати або відтворити;
- практичний rollback або hold action із відомою точкою повернення;
- рішення GO, HOLD, narrow або rollback із поясненням і відкритими unknowns.
План не є доказом виконаної міграції
Документований migration plan описує майбутню послідовність та критерії рішень. Він не доводить, що dependencies оновлені, pilot пройшов, production сумісний або rollout завершено. Фактичний результат зʼявляється лише після реальних команд, тестів, review і запису evidence.
Якщо behavior contract неможливо перевірити або compatibility matrix містить blocking Unknown, коректне рішення — HOLD, а не оптимістичне GO.
Канонічне джерело уроку · JavaRush
Відкрити матеріал JavaRush