The weird thing is that the planet's defense meter shows up as 0 in the UI, although the planet actually has defense 5. And that's weird because all the other meter values of the planet are displayed correctly, so it can't be insufficient detection on the attacker's part. Or does the defense meter have a different visibility than the other meters?
I noticed that, but also noticed that the turn after the battle, the value in the UI has updated. So, it may be that the last time the human player got new info about that planet was when it was at defense 0, but between then and the turn of the battle the player didn't have detection and the defense increased to 5. After the battle, the player had ships in the system long enough to get updated data, so this is shown in subsequent turns.
On a side note, there are some other weird things I noticed when examining the combat log: Battle rounds where the colonized planets in the system attack the uncolonized ones, battle rounds where ships attack the uncolonized planets in the system...
I noticed that as well. It's likely due to the code that determines which objects are valid targets for each empire not testing whether no-empire is a combatant in the battle, so it instead just lists every object not owned by each empire as a valid target, including unowned objects.
ship part stats not showing up correctly (mass driver 1 damage as 0, ROF as 0?).
That's a matter of using stats vs. using meters. The Dump function that output those part meter values does just that: it reports meter values. Actually ship attack is determined from part meter stats, which aren't presently implemented or calcualted through effects, so the meter values are misleading. This shouldn't affect that actual battle performance of the ships.