Whether a contribution can be merged as it stands. `asText`: names both sides edited, apart, which the merge merges as text (if that typechecks, which merging finds).
Who's commenting or merging: $TCM_AUTHOR, else the OS user. A server takes it from its maintainer's token as given; a contributor's token signs as its handle, whatever this says.
Merge a contribution into its target, by history: a fast-forward, or a three-way merge with no conflicts. With conflicts it's refused, saying how to bring the target in first.
Whether a contribution merges into its target, settled as the merge settles it: a name both sides edited where the edits are apart is merged as text, not a conflict.
The type errors in what a contribution brings: the code its branch reaches (its names and everything they use) that the target didn't where the two parted, typechecked here, each definition under the options it was checked under. A server checks that what it receives is what it claims, not that it typechecks (a client could post code no tcm would save): merging is where a contribution's types are judged.