This test contains a bistable resolution scenario when not using ahead-of-time
splitting of resolution forks: We meet one of two fork points depending on the
preferences, creating a resolution whose preferences lead us the other fork
point.
In the first case, we are in cleaver 2 and fork on sys_platform, in the
second case, we are in foo 1 or bar 1 amd fork over os_name.
First case: We select cleaver 2, fork on sys_platform, we reject cleaver 2
(missing fork os_name), we select cleaver 1 and don't fork on os_name in
fork-if-not-forked, done.
Second case: We have preference cleaver 1, fork on os_name in
fork-if-not-forked, we reject cleaver 1, we select cleaver 2, we fork on
sys_platform, we accept cleaver 2 since we forked on os_name, done.
I've also included a tristable system with two iterations lead-up time that is accidentally created. It's not documented, but i wouldn't waste such a cursed scenario.
Another test for the resolver instability.
I've also included a tristable system with two iterations lead-up time that is accidentally created. It's not documented, but i wouldn't waste such a cursed scenario.
With uv 0.2.31: