My AI rework will be able to very wisely choose from multiple upgrade paths IF the AI type of the unit is defined by the Player AI as it calls for units by its role needs. So for example, a Stone Thrower trained to attack units in the field will upgrade according to the best paths to keep being mostly useful for that role, whereas a Stone Thrower trained to defend a city, will upgrade according to the best paths to stay focused on the role of defending the city - they will also promote with these specialized priorities in mind.
However, if a Human player automates this task, it won't be as advanced as it will be for the AI because when a Human player trains a unit, they don't declare the specialized intended function of that unit by declaring the UnitAI it will be trained to be. This will leave all units of a given type trained as if they are to be the 'default' UnitAI role for Humans. That default role will guide its 'automatic' upgrades and 'automatic' promotions if set to do so automatically, but in all honesty, it won't often be the BEST way to go about it, and will leave your approach to the game much less refined than the AI if you let the game automate all that for you. Perhaps eventually I could expose the UnitAI settings to the player in a UI format, but... not really a critical project IMO.
I have a short-time solution that will reflect that it's Automated (hint: if you don't WANT it Automated - then don't CHOOSE it, that's all).
This said, you can simply let the Auto-Upgrader "roll a die" for ALL available options (including whether to upgrade or not each turn, since it often seems that upgrading depends on WHERE you do it as well).
If the die rolls a YES for the action itself, then it simply chooses from the currently available pool and upgrades to whatever falls out, RANDOMLY.
Simple logic: those players who DO NOT want this (but want to have CONTROL over it), will NOT choose Auto-Upgrading in the first place, no?
Which means that it has to be an easily accessible option to set ON/OFF, of course (and I'm not sure whether it is now).
Better yet, and I personally would prefer that as well:
Making this not an Auto-Upgrade, but an Auto-Alert (which you can also turn OFF for that particular unit, if it annoys you with upgrades you DON'T want now).
This Alert should also have options:
-Upgrade this unit to: "choose from the list".
-Upgrade ALL such units to: "choose from the list".
-Ignore this unit for "BUG amount" of turns.
-Ignore this unit forever.
-Ignore ALL such units forever.
And a "BUG" for:
-Turn unit alerts ON/OFF.
Like I said.
Honestly, I don't think this would be so hard to implement as a "unit-related event" or something.
All of that would definitely be much easier to implement (and also use) than anything "AI".
Or so it seems to me, really.
Oh, and all of that just for the human player, not for AI players.
Those can do whatever they want, loool.
After all, for them it's ALWAYS "AUTO", no?