The AI seems to stick to its plan, to a fault even. It has definitely stopped shuffling its units around and responding constantly to small movements. On the downside, it appears very reluctant to change its plans, leading to things like heavy infantry chasing cavalry all over the map, and AI units spending too long finishing off a surrounded unit and not moving to help elsewhere on the battlefield.

The AI seems to make clumsy flanking attempts at times. But not really with cavalry—it uses its shock cavalry in the centre, which IIRC is a vanilla behaviour.

Overall I was very pleasantly surprised with the AI behaviour.
Glad to hear that.
Getting shock cavalry to perform better has been a long standing battle of mine. Currently I'm having to redesign the premise behind how the AI behaves and how it utilizes the XML file. Instead of relying on what I presume to be internal algorithms I've tried to write elements in such a way that encourage the AI to use its troops in a more efficient and sensible manner.

As you've observed, it's not always gone too well. Hopefully in future battles the cavalry disengage and reevaluate their target/priorities like they're supposed to. They should eventually end up either hitting your flank or trying to go for a double envelopment.

In 2.06a and onwards I hope to improve upon the rest of what you mentioned. Thanks again for the feedback, we really appreciate such through reports.

It looks like mostly the AI does these things, a big improvement over both EBI and vanilla Kingdoms. However, it's not very good at them; the AI still makes some boneheaded decisions like starting wars on multiple fronts when it can't really afford to do so, but at least it's not some crazy berserker that always attacks its neighbours, and I've had the AI offer ceasefires when it starts losing and actually honour treaties (however, it still has trouble making concessions during negotiations, this is Total War after all).

On thing I've noticed with the AI merging stacks is that, while it tries to avoid attacking piece meal with small stacks, it tries to merge them too close to its target, so if the player is proactive they can attack the small stacks before they merge together. If possible, the AI should be programmed to first merge its forces, and only then move towards its target.
Unfortunately this is due to being able to change everything (what,when,where,why) except how in regards to CAI decision making. Anotherwords it's a combination of my being unable to do anything about how the CAI pathfinder and how the LTGD (long term goal director) works. I do have access to a couple of LTGD related algorithms, other than that however I don't have access to the underlying architecture within the engine.

So for the moment things will probably remain the same as the current state of things is a choice between getting the CAI to move into high gear immediately when acting on defensive decisions, or allowing it to sit indefinitely until it finally plans a relief force. In essence, invasion decisions have a fundemental role when working with the defensive ones, so I have to find the right balance. Originally CA planned to implement a 'defensive priority' which would really open things up with allocation of units/armies in a more efficient and effective way, (especially siege relief forces) but they never did and I couldn't make it work because the parser info/architecture simply wasn't in place for that.