Looks good, couple of minor comments:
> * add findConflicting to Darcs.Patch.Conflict
> +-- | Find all patches in the context that conflict with a given patch.
> +-- This works by commuting the patch and its dependencies backward until it
> +-- becomes unconflicted, then minimizing the trailing patches by re-commuting
> +-- them backward as long as that keeps the patch unconflicted.
> +-- Precondition: the context must contain all conflicting patches.
> + :: forall p wX wY wZ
> + . (Commute p, Conflict p, ShowPatch p)
> + => RL p wX wY
> + -> p wY wZ
> + -> (RL p :> p :> RL p) wX wZ
It's not obvious to me from the signature which patches are the conflicting ones,
maybe add it to the doc comment?
> +-- | Like 'standardResolution' but it doesn't use the @instance (Named p)@
> +-- because the traling list of patches may contain "fake" conflictors.
> + :: (RepoPatch p)
I wonder if it's worth tightening this signature to make it explicit that it
can't use the (Named p) instance?