AI coding is still needed for stacks, because it has to think of composition, target tech and production levels, which cities to target, best course to travel, etc. That still takes quite a lot of processing, nothing like your simple go to city>bombard>attack routine, just that the processing has to be a lot more long-term and deep (in the game) for it to work properly.
I suggest that you crack open the Civ4 SDK and take a look at what is actually going on in the AI. The Combat AI does not perform all of the tasks you mentioned.
Target Technologies are tasked by the Research AI, which operates at about the same capacity as the Civ5 Research AI.
Production Levels are tasked by the individual City AI's, and are limited by the city location- handled by the "Settler" unit AI.
Stack Composition does not exist to the AI. The AI will stack units based on their combat strength, and nothing else. It's why you see Horsemen stacked with Archers (which goes against the purpose of using horsemen), and Artillery stacked with Machine Guns (Neither of which can kill units).
City Targeting is largely random, and is actually just a modifier on top of the "Movement" and "Attack" functions. Speaking of "movement"... "Best course to travel" isn't even
kind of handled by the AI. The AI in Civ4 was moving individual units around based on what terrain they were adjacent to, and the general direction of the nearest enemy. The Civ4 combat AI can be explained in terms of "Move Towards Friendly Units, Move Towards Enemy Units, Move Towards Tiles with Defensive Bonuses." The only reason Civ4 Combat AI works better than Civ5 combat AI is because they act
the same, and SoD doesn't exist anymore.
All of this said, the system has it's flaws. Overall, the problems with 1UPT aren't necessarily problems with 1UPT itself, but the supporting infrastructure that 1UPT sits on. The major issue that I've found that a lot of people have with 1UPT (myself included) is that there weren't enough changes to game mechanics to support it properly.
There are not enough tiles per map (TPM). When you play a "Standard" size map on previous titles, and compare them to Civ5, the maps feel smaller in the latest iteration. In reality, the maps are almost exactly the same size- but it's a noticeable issue. This is because in 1-4, the "base" movement for a unit was 1 tile; in 5, the base movement is 2 tiles.
By doubling the speed of every unit, you have essentially halved the size of the map. If the map sizes were increased to match the unit speed, the impact on map-size could have been partially mitigated. The other problem with the TPM is actually FROM the stacking issues; in previous titles, 1 tile could hold an infinite number of troops.
Nobody complained when a stack of 3-6 units showed up at their doorstep- the problem is when a stack of 20-30 units shows up. 6 units already feels like a horde, so this should have been the baseline for how many units should occupy an area. If they wanted to maintain the same number of tiles, they should have allowed stacking of
up to six units on a tile. If they wanted to use 1UPT, they should have increased the TPM by 6x. This would have mitigated the movement-speed issue, but would have wrecked the minimum standards to play the game- reducing the majority of players to playing on tiny maps. However, cities would have had to take up more than one tile (preferably six) and should have to be conquered in "bits."
Additionally, the AI seems to have a hard time handling 1UPT. This is largely because the Combat AI seems to be copy-pasted from Civ4. The AI's inability to properly support a naval invasion, and apparent unwillingness to transport a military across any body of water larger than a small lake is typical of it's inability to produce naval transports. It almost seems as if AI units will only embark if they can also reach the area on land, but the trip is longer or requires waiting.
The second issue, when the AI is trying to handle 1UPT, is that the units can't stack, but the AI seems to try to do it anyways. When you throw in the additional production costs, you get the front-loaded attacks that the AI throws at you in wartime. You show up at their borders, a "carpet" of 3-7 units attack you, and you steamroll over their cities because they have no military anymore. The AI doesn't understand the concept of "Reserve Troops", or lateral grouping and deconfliction. Every unit walks around like it is the only unit in the world, and every unit likes to think it's the only unit available to attack and defend.
I am convinced that the only reason units get grouped together in carpets are because they are leaving from similar locations, and the individual movement scripts just keep preferring the same tiles over and over again- giving the illusion that units actually care what's around them.
So, could 1UPT have worked? Yes. Your computer would throw itself out of a window every time your mouse even hovered over the Civ5 icon because of how demanding the game would be, but yes. Since they expanded the scope of the game from "Handle Strategic, Simulate Operational and Tactical", to "Handle Strategic and Operational, Simulate Tactical", they still need to expand the game mechanics to reflect that; but yes, 1UPT could have worked. The AI would need to be updated to understand how to utilize basic concepts that were added in Civ5, but yes... 1UPT could have worked.
Unfortunately, these facts weren't considered when 1UPT was implemented. It's not that Civ5 took a step backwards with 1UPT, took a step backwards with the AI, or took a step backwards with map sizes. On the contrary, Civ5 took a step forwards in complexity with 1UPT... and then left everything else the same. They may as well have tried to release Civ4 on a floppy disk.