Two rules can both produce the same file and Snakemake will not guess
Wildcard patterns in two rules overlap, so more than one rule could legitimately create the requested output. Snakemake refuses to pick, because picking wrong would silently produce the wrong result.
Make the patterns non-overlapping — usually by tightening a wildcard with a constraint (wildcard_constraints) or by putting each rule's output in its own directory. ruleorder: resolves it too, but it hides the ambiguity rather than fixing it.