Модуль 10 · Урок 38

Pull requests, conflicts і evidence-based review

Pull request — пропозиція інтегрувати head changes у base branch. Якісний review оцінює весь effective diff, requirements, risks і evidence; зелений CI або відсутність conflict не доводять correctness.

Base / headFiles changedReviewConflicts

PR contract

Опишіть purpose, included/excluded scope, base/head branches і exact SHA, requirement/defect, behavior change, verification, risk, rollout/rollback та reviewer focus. Перед request review автор сам читає Files changed і перевіряє, що accidental/generated/secret files відсутні.

UnderstandRequirement, user impact, base/head і change boundaries.
InspectEffective diff, data/config/migration та dependency effects.
VerifyTests, CI, manual evidence, failure paths і environment match.
DecideComment, approve або request changes із конкретним rationale.

Review не дорівнює style policing

AreaПитання reviewer
CorrectnessЧи покриті boundaries, invalid state, race/failure та backward compatibility?
Security/privacyPermissions, secrets, logging, input/output exposure і dependency trust?
OperationsConfig, migration, monitoring, feature flag, rollback і recovery?
TestsЧи failed би test до change; чи evidence належить exact head SHA?

Коментар має location, observation, risk/impact, requested outcome і, за потреби, question. Розрізняйте blocker, non-blocking suggestion і clarification.

Як виникає conflict

Git робить three-way merge з двох branch tips і common ancestor. Якщо зміни несумісні, merge зупиняється, `git status` показує unmerged paths, а markers відділяють sides. Conflict resolution — нове рішення; не можна механічно обрати «ours/theirs» без розуміння обох intents.

Resolution треба тестувати заново

Після редагування видаліть усі markers, stage exact files, перечитайте final diff, запустіть affected tests і перевірте combined behavior. «Conflict зник» не означає «обидва requirements збережені».

Merge, squash і rebase

Merge може fast-forward branch pointer або створити merge commit для divergent history. Squash створює один result commit без збереження topic commits як окремих parents. Rebase replay-ить commits на нову base і переписує commit IDs; shared/public history не переписують без командної домовленості.

Практика

Заповніть `pull-request-template.md`, `review-checklist.csv` і `conflict-resolution-log.csv`. Для synthetic conflict поясніть обидва intents, combined resolution та tests — не лише видалення markers.

Офіційні джерела

Практична перевірка · урок 38 з 44

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що пропонує pull request?
2. Що автор має зробити перед request review?
3. Чи green CI доводить correctness?