$branch
$branch : string
What a merge would do, object by object, before anything is written.
The document the confirm form prints and the command's manifest. It exists for the same reason a restore plan does: a merge is not one decision but one per configuration object, and a confirmation that said "merge 41 objects" without saying which of them collide is asking somebody to approve something nobody has looked at.
A plan with an unresolved conflict cannot be applied. Not "is discouraged from being applied": MergePlan::isApplicable() is FALSE and Merger refuses. The way past a conflict is to name a strategy, which is a decision with a name attached rather than a default that happened.
A problem is also blocking. The problems are things a branch cannot carry - a change in a realm that is captured as deltas, a merge base that could not be found - and every one of them means the plan does not describe the whole of what the branch holds.
$strategy : \Drupal\strata\Branch\MergeStrategy
__construct(string $branch, string $target, string|null $base = null, string|null $ours = null, string|null $theirs = null, \Drupal\strata\Branch\MergeStrategy $strategy = \Drupal\strata\Branch\MergeStrategy::REFUSE, array$entries = [], list $problems = [], int $unchanged = 0, int $plannedAt = 0, float $seconds = 0.0) : mixed
Constructs a plan.
| string | $branch | Name of the branch being merged in. |
| string | $target | Ref name being merged into, such as |
| string|null | $base | The merge base, or NULL when none was found. |
| string|null | $ours | The target's tip, or NULL when the target ref does not exist. |
| string|null | $theirs | The branch's tip, or NULL when the branch does not exist. |
| \Drupal\strata\Branch\MergeStrategy | $strategy | What the plan does with a key both sides changed. |
| array |
$entries | Configuration object name keyed to what the merge decided, covering only the objects one side or the other actually touched. |
| list |
$problems | One line per thing that stops the merge, each naming what it is about. |
| int | $unchanged | Objects both sides left in the same state, counted rather than listed. |
| int | $plannedAt | Unix microseconds the plan was built. |
| float | $seconds | How long planning took. |
refuse(string $branch, string $target, string $problem, \Drupal\strata\Branch\MergeStrategy $strategy = \Drupal\strata\Branch\MergeStrategy::REFUSE) : self
A plan that could not be built.
| string | $branch | Name of the branch. |
| string | $target | Ref name being merged into. |
| string | $problem | Why it could not be built. |
| \Drupal\strata\Branch\MergeStrategy | $strategy | The strategy that was asked for. |
The plan.