diff --git a/control_plane/contracts/merge_train_stack_collapse.py b/control_plane/contracts/merge_train_stack_collapse.py index 91152a2..7eeb7ac 100644 --- a/control_plane/contracts/merge_train_stack_collapse.py +++ b/control_plane/contracts/merge_train_stack_collapse.py @@ -251,10 +251,19 @@ def execute_merge_train_stack_collapse_plan( current_head_shas[mutation.parent_pull_request_number] = merge_commit_sha if len(updated_mutations) < len(plan.mutations): updated_mutations.extend(plan.mutations[len(updated_mutations) :]) + updated_child_dispositions = tuple( + disposition.model_copy( + update={ + "expected_head_sha": current_head_shas[disposition.pull_request_number] + } + ) + for disposition in plan.child_dispositions + ) return plan.model_copy( update={ "status": current_status, "mutations": tuple(updated_mutations), + "child_dispositions": updated_child_dispositions, "updated_at": updated_at, } ) diff --git a/tests/test_merge_train_stack_collapse.py b/tests/test_merge_train_stack_collapse.py index 5915ce9..c71fcd8 100644 --- a/tests/test_merge_train_stack_collapse.py +++ b/tests/test_merge_train_stack_collapse.py @@ -179,6 +179,13 @@ def test_execute_plan_mutates_each_child_into_its_parent_branch(self) -> None: [mutation.merge_commit_sha for mutation in executed_plan.mutations], ["merge-32-31", "merge-31-30"], ) + self.assertEqual( + [ + disposition.expected_head_sha + for disposition in executed_plan.child_dispositions + ], + ["merge-32-31", "head-32"], + ) self.assertEqual( branch_client.requests, [ @@ -255,7 +262,7 @@ def test_reconcile_children_after_root_landing_comments_labels_and_closes(self) ) self.assertEqual( disposition_client.closed, - [(31, "head-31"), (32, "head-32")], + [(31, "merge-32-31"), (32, "head-32")], ) self.assertEqual(disposition_client.labels, [(31, "stack-landed"), (32, "stack-landed")]) self.assertIn("root PR #30", disposition_client.comments[0][1])