I’m having trouble finding out exactly why there are versioned and unversioned cooks. I haven’t found any real documentation on why I should use a versioned cook but going through the code I receive some mixed signals about it.
The cook commandlet defaults to versioned cooks unless -unversioned is passed in. I would normally take that to mean that versioned is preferred normally. The mixed signals come in when I see that everywhere I look including UAT/BuildGraph, Project Launcher (new), and ushell all do everything they can to make the default pass -unversioned tot the cook commandlet calls. That makes me think unversioned is maybe preferred. Then I see this comment in the commandlet:
/** Save all cooked packages without versions. These are then assumed to be current version on load. This is dangerous but results in smaller patch sizes. */
So now I am really uncertain of the correct thing to do. Of course we want smaller patch sizes and more consistent cook output but what is the dangerous part, is there some extra validation we should be using when using unversioned? We do already test our determinism and are also beginning to run the cookincremental validations, is there something more we should be looking for if we move from versioned to unversioned cooks.
[Attachment Removed]